1

我有一个sysuser如下所示的 sql 表:

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)+"'");

其中字符串是ArrayList<String>.

代码不起作用,我不知道为什么。它与另一个查询完美配合。我收到以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

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

4

2 回答 2

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)
于 2013-01-12T18:54:17.270 回答
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

于 2013-01-12T18:59:12.187 回答