DUVIDA, Banco de Dados

20 respostas
marthian_2

Pessoal, tou fazendo uma aplicação standalone e estou usando o HSQLDB.
O problema está na consistencia dos dados no banco.

Quando, por exemplo, cadastro um funcionário aparece a mensagem q foi cadastrado com sucesso, mas, na maioria das vezes, quando vou pesquisar por ele, ele não está no banco.

Conclusão, esse sistema NÂO ESTÀ BOM!!!

O que eu faço? Será problema no banco ou no código?

Se alguem puder ajudar, ficarei grato!

Vlw.

20 Respostas

nbluis

99,999999997% de chance de ser no código…

superRuiz

hmmm, tente utilizar outro banco de dados para tentar eliminar a possibilidade de ser erro do proprio bd caso funcione perfeitamente.

Eu gosto do ms sqlserver express, eh gratuito e facil de usar =D
mas existem inumeros outros que são tão bons quanto

J

Acontece que o HSQLDB tem a opção de salvar um dado em memória, isto é, o dado nem chega a ser salvo em disco, e quando a aplicação termina vc ‘perde’ as inserções feitas. A razão pra existência deste recurso é vc utilizar um BD relacional pra fazer uma espécie de cache de dados não persistentes, tipo objetos mais requisitados, etc.

Acredito que vc esteja tendo este tipo de problema. Poste a URL de conexão do HSQLDB pra esclarecer se foi isso …

marthian_2

Mas o q poderia ser[url]?

Parte da Classe Funcionario.DAO:
public void adicionar(FuncionarioTO funcionario) {

try {
		Statement stmt = this.conexao.createStatement();
		String query = "INSERT INTO Funcionario(id,nome,cpf,rg,telefone,data_nascimento"
				+ ",cidade, cep, estado, "
				+ "rua,bairro,numero,complemento, funcao)VALUES("
				+ null
				+ ",'"
				+ funcionario.getNome()
				+ "','"
				+ funcionario.getCpf()
				+ "','"
				+ funcionario.getRg()
				+ "','"
				+ funcionario.getTelefone()
				+ "','"
				+ funcionario.getData()
				+ "','"
				+ funcionario.getCidade()
				+ "','"
				+ funcionario.getCep()
				+ "','"
				+ funcionario.getEstado()
				+ "','"
				+ funcionario.getRua()
				+ "','"
				+ funcionario.getBairro()
				+ "','"
				+ funcionario.getNumero()
				+ "','"
				+ funcionario.getComplemento()
				+ "','"
				+ funcionario.getFuncao()
				+ "')";
		res = stmt.executeQuery(query);
		stmt.close();
	} catch (SQLException e) {
		System.out.println("Erro duranta a inserção:" + e.getMessage());
	}

}
Parte do SistemaBO

public void addFuncionario(FuncionarioTO funcionario) {

try {

funcionarioDAO = new FuncionarioDAO();

funcionarioDAO.adicionar(funcionario;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}
}
marthian_2

“jdbc:hsqldb:file:bd/aluminio”

superRuiz

a url é o endereço para conexao do banco de dados:
ex

private final static String url = “jdbc:jtds:sqlserver://localhost/luna;user=sa;password=*******”;

marthian_2

Acho q pode ser o q jdefargefalou.
Quando crio uma tabela fica assim no script:
CREATE MEMORY TABLE FUNCIONARIO(ID INTEGER IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,
NOME VARCHAR,
CPF VARCHAR(14),
RG VARCHAR(20),
TELEFONE VARCHAR(15),
DATA_NASCIMENTO VARCHAR(10),
CIDADE VARCHAR(40),
CEP VARCHAR(9),
ESTADO VARCHAR(2),
RUA VARCHAR(40),
BAIRRO VARCHAR(40),
NUMERO INTEGER,
COMPLEMENTO VARCHAR(40),
FUNCAO VARCHAR(50));

marthian_2
public ConexaoHSQLDB() {

try {

Class.forName(org.hsqldb.jdbcDriver);

conn = DriverManager

.getConnection(jdbc:hsqldb:file:bd/aluminio);

} catch (SQLException e) {

System.out.println(’\n + Erro na conexão com o banco);

e.printStackTrace();

System.exit(1);

} catch (ClassNotFoundException e) {

System.out

.println(’\n + Classe do driver do banco de dados não encontrada);

}

}
marthian_2

superRaiz ,
eu não sou tão experiente mais eu sei o q é uma URL…
kkkkk

superRuiz

kkkkk

nunca se sabe quem está do outro lado, entao nao custava nada dizer xD

marthian_2

Ms vlw!

MAs então como faço pra armazenar sem ser em memoria?
LEmbrando q às vezs os dados ficam armazenados de verdade. (rs)

marthian_2

Acho q encontrei o erro.
Por engano quando fui cadastrar o meu banco escolhi a opção: “HSQL DataBase Engine In-Memory” ao invés de standalone.

Vou testar depois falo se deu certo.

T

Pelo que percebi vc esta criando a tabela na memoria…
troque o “MEMORY” por “CACHED” quando criar a tabela assim ela sera persistidasa

marthian_2

Agora tá funcionando. Vlw aí pelas dicas!!!

Agora tenho outra duvida!
Quanto eu cobro por esse sisteminha?
É bem simples…

W

ah, se eu pudesse colocar preço depois de desenvolver… hehehehe

lol

marthian_2

Desculpem a minha ignorância em relação a preço.
Estou no nono periodo de sistemas de informação e essa é a primeira fez q desenvolvo um aplicatico comecial.
O cliente me pediu pra dizer o preço antes de fazer, aí eu disse a ele q ia começar a desenvolver e que o preço do software iria depender do grau de dificuldade das tarefas. Mas ele me pediu pra dizer logo pra poder saber se ele pode ou não pagar. Pedi a ele 2 semanas pra começar a desenvolver e depois diria o valor.
Como vcs já são bem mais experientes do quesito, pensei em pedir auxilio à vcs.
O q faço? Ou melhor como vcs fazem?

marthian_2

Lembrando q o cliente é uma micro-empresa q está começando agora!

W

eu cobro por hora…

faço o orçamento do projeto, calculando as horas que vou gastar, e faço o preço…

se eu passar disso, me ralo… (pq vou ter que trabalhar sem receber).

Mas tem que tomar cuidado pra não passar prazo absurdo, com preço absurdo…

sei lá… eu faço assim…

marthian_2

Quanto é sua hora?

W

cara… depende da tua experiência…

mas como diria a copélia, do toma lá da cá:
“Prefiro não comentar.”

hehehe

Procura no google que tu consegue ter uma base legal…

Valeu!

Criado 4 de janeiro de 2008
Ultima resposta 4 de jan. de 2008
Respostas 20
Participantes 6