我有一个如下所示的SQL表sysuser
:
id (pk)
email
password
role
我想在表格中插入值。我在ArrayList<String>
中获取了数据:
cell 0 no value,
cell 1 ID,
cell 2 email,
cell 3 password,
cell 4 role,
这是我写的代码:
stmt.executeUpdate("INSERT INTO sysuser VALUES ('"+string.get(1)+"', '"+ string.get(2) +"','"+ string.get(3) +"','"+string.get(4)+"'");
其中string是ArrayList<String>
。
代码无效,我无法理解原因。它与另一个查询完美配合。我收到以下错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
我阅读了有关准备好的语句,但我不理解语法。我知道直接插入数据是不安全的,但对于这个特定的查询并不重要。
答案 0 :(得分:3)
您忘记了)
stmt.executeUpdate("INSERT INTO sysuser " +
"VALUES ('" + string.get(1) + "','"+
string.get(2) + "','"+
string.get(3) + "','"+
string.get(4) + "')");
^------------here
如果你没有填写表格的所有列,你应该提供一个你要插入的列的列表
INSERT INTO sysuser (col_name_1, col_name2, col_name5, col_name7)
VALUES (1, 2, 3, 4)
答案 1 :(得分:0)
尝试首先打印此语句生成的sql。
String sql = "INSERT INTO sysuser VALUES ('"+string.get(1)+"', '"+ string.get(2) +"','"+ string.get(3) +"','"+string.get(4)+"'";
System.out.println(sql);
stmt.executeUpdate(sql);
然后在您喜欢的SQL工具中运行并检查它给出的错误。 并在此处发布两个结果。 :)
稍后点击此链接:Preventing_SQL_Injection_in_Java