Estou tentando executar um update mas dá um erro:
Syntax error or access violation, message from server: "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '='Leandro',cpf ='1111111111',rg ='1111111111',data ='1/10/2003'"
Tenho quase certeza que é algum erro na concatenação. Meu código:
StringBuffer sql = new StringBuffer();
sql.append("update clientes set");
sql.append("nome ='" + request.getParameter("nome") + "',");
sql.append("cpf ='" + request.getParameter("cpf") + "',");
sql.append("rg ='" + request.getParameter("rg") + "',");
sql.append("data ='" + request.getParameter("data") + "',");
sql.append("end ='" + request.getParameter("end") + "',");
sql.append("bairro ='" + request.getParameter("bairro") + "',");
sql.append(" tel1 ='" + request.getParameter("tel1") + "',");
sql.append("tel2 ='" + request.getParameter("tel2") + "'," );
sql.append("celular ='" + request.getParameter("cel") + "'," );
sql.append("cidade ='" + request.getParameter("cid") + "'," );
sql.append("uf ='" + request.getParameter("uf") + "',");
sql.append("cep ='" + request.getParameter("cep") + "'");
sql.append("where codigo = " + request.getParameter("cod"));
int res = stm.executeUpdate(sql.toString());
Desde já agradeço!
A data, vc tem q passar para o BD como ano-mes-dia e os campos numéricos nao tem ’ '.
Todos os campos em questão são do tipo char.
Tente passar a data como ‘aaaa-mm-dd’, outra coisa, q vi agora. Falta um espaço entre o set e o nome.
Pq voce nao usa PreparedStatement???
java.sql.PreparedStatemet…
bom estudo…
Não consigu impolementa-lo com o update.
O erro que dá:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] C:TomcatworkStandalonelocalhost ccclientesalteracao2_jsp.java:57: unclosed string literal
[javac] PreparedStatement sql = con.prepareStatement("update clientes
[javac] ^
[javac] C:TomcatworkStandalonelocalhost ccclientesalteracao2_jsp.java:62: unclosed string literal
[javac] cep = ? where codigo = ? ");
[javac] ^
[javac] C:TomcatworkStandalonelocalhost ccclientesalteracao2_jsp.java:76: ')' expected
[javac] int res = stm.executeUpdate();
[javac] ^
[javac] 3 errors
Meu código ficou assim:
PreparedStatement sql = con.prepareStatement("update clientes
set nome = ?, cpf = ?, rg = ?,
data = ?, endereco = ?, bairro = ?,
tel1 = ?, tel2 = ?, celular = ?,
cidade = ?, cep = ?, uf = ?,
cep = ? where codigo = ? ");
sql.setString(1, request.getParameter("nome"))
sql.setString(2, request.getParameter("cpf"))
sql.setString(3, request.getParameter("rg"))
sql.setString(4, request.getParameter("data"))
sql.setString(5, request.getParameter("end"))
sql.setString(6, request.getParameter("bairro"))
sql.setString(7, request.getParameter("tel1"))
sql.setString(8, request.getParameter("tel2"))
sql.setString(9, request.getParameter("cel"))
sql.setString(10, request.getParameter("cid"))
sql.setString(11, request.getParameter("cep"))
sql.setString(12, request.getParameter("uf"))
sql.setString(13, request.getParameter("cod"))
int res = stm.executeUpdate();
Desde já agradeço!
cv1
Outubro 1, 2003, 5:48pm
#7
Uma String literal em Java tem que comecar e terminar na mesma linha. Simples
Beleza! Agora só não está aceitando o stm.executUpdate();!
Desde já agradeço!
cv1
Outubro 1, 2003, 6:27pm
#9
Qual erro esta dando agora?
samurai
Outubro 1, 2003, 7:25pm
#10
O erro é este:
D:TomcatworkCatalinalocalhostprojetoorgapachejspclientesalteracao2_jsp.java:70: cannot resolve symbol
symbol : method executeUpdate ()
location: interface java.sql.Statement
int res = stm.executeUpdate();
^
1 error
Este método precisa de alguma assinatura?
cv1
Outubro 1, 2003, 10:30pm
#11
O método não precisa de nada, mas vc precisa ler o JavaDoc da JDBC, ou perceber que o método Statement.executeUpdate() não existe
http://java.sun.com/j2se/1.4.1/docs/api/java/sql/Statement.html
samurai
Outubro 1, 2003, 10:49pm
#12
Olha cara ainda sou novato e não quero discutir, mas eu olhei lá e tem sim.
int executeUpdate(String sql)
Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
E está deste jeito. Insot é que eu não entendi. Será que não tem que não precisa de nenhuma assinatura mesmo?
cv1
Outubro 2, 2003, 12:08am
#13
Não existe. Repare bem:
java.sql.Statement.executeUpdate()
NÃO EXISTE , enquanto:
java.sql.Statement.executeUpdate(String sql)
Existe