PreparedStatement - Erro no inserir... "syntax to use near '?,?)'" [Resolvido]
6 respostas
peerless
Bom dia galera, fiz um método que gera o Prepared/SQL sozinho … e na hora de usar ele, gera a seguinte exception:
Posso ser uma desatenção boba agora, mas é que ja estou de cabeça quente e ñ consigo ver o que pode estar causando tal excption…, então se alguém souber o pq… ficaria agradecido
Ah sim, ele esta gerando o SQL corretamente… o debug dele retornou:
Tem que ver como você está usando o código. Coloque algumas linhas.
Até!
von.juliano
Vc precisa inserir algum valor né? Sua tabela está esperando que tipo de valores? Qualquer que for, enquanto sua inserção for
insert into teste values (?,?)nunca vai funcionar. No lugar dos “?” vc tem q por os valores correspondentes.
P
pm1
Sua tabela so tem dois campos ?
Post a estrutura da sua tabela e pedaço do codigo que cria o statment e executa a query…
peerless
Postando ......
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| nome | varchar(30) | YES | | NULL | |
| sobre | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
Código de preparo:
publicintlengthArray(String[]array){booleanb=true;inti=0;while(b){if(array[i]!=null)i++;elseb=false;}returni;}publicStringcreateFields(String[]interrogacao){booleanb=true;inti=0;Stringretorno="";while(b){if(interrogacao[i]!=null)if(interrogacao[i+1]==null)retorno+="?";elseretorno+="?,";elseb=false;i++;}returnretorno;}publicvoidaddTable(Stringtable,String[]values)throwsSQLException,ClassNotFoundException{PreparedStatementpst;Stringexecute;execute="insert into "+table+" values (";execute+=createFields(values);execute+=")";System.out.println(execute);pst=gd.conectaBD("CPADI").prepareStatement(execute);for(inti=0;i<lengthArray(values);i++)pst.setString(i+1,values[i]);pst.execute(execute);}