更新语句语法错误

rdk*_*992 2 java sql jsp

我有以下字符串,其中包含我要执行的查询:

     query = "UPDATE inventario"
     + " set descripcion = '" + descripcion + "',"
     + " set bodega = '" + bodega + "'"
     + " where codigo = " + codigo;
Run Code Online (Sandbox Code Playgroud)

我得到一个Update语句语法错误,但我没看到错误在哪里.任何帮助表示赞赏.列"descripcion"和"bodega"是文本类型列.

Jon*_*eet 8

好吧,这可能是因为你有多个set部分而不是使用逗号分隔,并且可能是因为你没有关于codigo值的引号(如果那是另一个字符串)...但是我强烈建议你不要像这样创建SQL无论如何,直接在SQL中使用值.

相反,使用准备好的声明:

String sql = "UPDATE inventario set descripcion=?, bodega=? where codigo=?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, descripcion);
st.setString(2, bodega);
st.setString(3, codigo);
Run Code Online (Sandbox Code Playgroud)

使用预准备语句有三个直接好处:

  • 它避免了SQL注入攻击(想想如果你的描述中有引号会发生什么)
  • 它将代码(SQL)与数据(值)分开
  • 这意味着您可以避免像datetime这样的类型的转换,其中通过字符串表示进行转换是一个巨大的潜在错误来源