Passar dados de um array para o banco de dados

16 respostas
Frajuto

Olá pessoal, estou com um probleminha e gostaria que alguém me ajudasse a resolver…

Eu tenho um array e preciso colocar os dados de cada indice desse array dentro de um banco de dados… oq eu faço?
Estou tentando dessa forma mas esta dando no comando SQL de Insert…

try {

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

con = DriverManager.getConnection(“jdbc:odbc:JAVA_TESTE, teste, teste);

}

catch (Exception e) {

System.err.println (“Erro no comando SQL de Conexao”);

}		

try {

Statement stmt = con.createStatement();
for (int indice = 0; indice<array.length; indice++){

stmt.execute ("INSERT INTO TESTE_IMPORTACAO (LINHA) VALUES (’ "+ array[indice] + ") ");

}

stmt.close();

}
catch (Exception e){

System.err.println (Erro no comando SQL de Insert);

}

Desde já… muito obrigado…

16 Respostas

Diogenes

A pergunta q não quer se calar:

Qual erro tá ocorrendo cara???

Ps.: Use java.sql.PreparedStatement

Frajuto

Acontece que não está informando erro… Somente não inicia o loop para inserção de dados dentro do banco…
Ele vai para o catch onde eu coloquei a mensagem (“erro SQL de insert”).

O programa está sendo compilado sem erros!!! porém quando vai rodar não executa a inserção… entendeu?

maresp

Então coloca um e.printStackTrace() dentro do catch e vê qual exceção tá ocorrendo.

Frajuto
o erro é esse

java.sql.SQLException: General error

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6987)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)

at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)

at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)

at Importa.<init>(Importa.java:78)

at Importa.main(Importa.java:98)
rogeriop80
stmt.execute ("INSERT INTO TESTE_IMPORTACAO (LINHA) VALUES (' "+ array[indice] + ") ");

Vc abriu aspas simples em VALUES (’ e não fechou.

[]´s

Rogério

Frajuto

Rogério… agora deu certo… mas, são 8033 registros e só foram importados 747… logo caiu no catch novamente reportando o mesmo erro.

rogeriop80

Qual banco de dados vc está usando !!!

[]´s

Frajuto

ACCESS…
É um sistema que eu quero migrar a importação para java…
mostrar serviço

rogeriop80

Frajuto:
ACCESS…
É um sistema que eu quero migrar a importação para java…
mostrar serviço

Olha, nao sei se pode ser isso, mas talvez o access não esteja conseguindo gravar na velocidade em que sua aplicação ta escrevendo. Tente dar um sleep de 100 ms entre cada gravação.

Frajuto

como?

rogeriop80

for (int indice = 0; indice<array.length; indice++){ stmt.execute ("INSERT INTO TESTE_IMPORTACAO (LINHA) VALUES (' "+ array[indice] + ") "); Thread.sleep(100); }

Frajuto

Muito Obrigado

rogeriop80

Funcionou !!!

Frajuto

uma parte sim… estou aparando as pontas aqui e depois eu te falo

Frajuto

O programa rodou… o problema na interrupção dos dados foi devido ao fato de o arquivo txt em alguns registros possuir o caracter especial (’)…
Quando a String SQL é lida, esse caracter passa a fazer parte da String SQL…

Mais um peteco resolvido…
Quero agradecer a vocês pelo tempo e pela ajuda prestada…

até o proximo peteco… um Abraço

aborges

First of all:

Procure utilizar PreparedStatement… Ele fica no buffer do seu banco de dados tornando a execucao bem mais rapida. Principalmente qd se quer alterar muitos registros como eh o seu caso…

Outra coisa…

Esta forma de concatenar valores para gerar uma query eh bem sujeita a erros…

Se o valor de sua variavel possuir uma aspas simples(’) ele ira dar erro tb!

Utilizando o PreparedStatement, vc nao teria este problema!

Criado 27 de dezembro de 2004
Ultima resposta 28 de dez. de 2004
Respostas 16
Participantes 5