createStatement的java sql语法错误

时间:2013-01-12 18:52:39

标签: java sql jdbc

我有一个如下所示的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行的''附近使用正确的语法

我阅读了有关准备好的语句,但我不理解语法。我知道直接插入数据是不安全的,但对于这个特定的查询并不重要。

2 个答案:

答案 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