JDBC插入查询错误

时间:2013-07-07 22:17:48

标签: java sql jdbc

我是Java和JDBC的新手。目前我正在为一门Java课程开展一个学校项目。我正在尝试使用JDBC将一些java变量传递给Insert SQL查询,但我得到了以下异常:

SQLException: ORA-00917: missing comma

这是指示:

stmt.executeUpdate("INSERT INTO question (idnum, question, option1, option2, option3, option4, answer) VALUES("+4+", "+question+", "+option1+", "+option2+", "+option3+", "+option4+", "+answer+")");

如何修复查询?

4 个答案:

答案 0 :(得分:2)

试试这个

String sql = 
   "INSERT INTO question (idnum, question, option1, option2, option3, option4, answer)       VALUES(?, ?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);

preparedStatement.setInt(1, 4);
preparedStatement.setString(2, question);
preparedStatement.setString(3, option1);
preparedStatement.setString(4, option2);
preparedStatement.setString(5, option3);
preparedStatement.setString(6, option4);
preparedStatement.setString(7, answer);

int rowsAffected = preparedStatement.executeUpdate();

答案 1 :(得分:2)

首先,您收到错误的原因是您的SQL中存在语法错误。只需打印您正在创建的String即可显示问题。

那就是说,你应该使用prepared statements。这只是 no 手动构造SQL的原因。它不仅可以避免您遇到的问题,而且还可以避免您的代码容易受到SQL注入的影响。

String query = "INSERT INTO question (idnum, question, option1, option2, option3, option4, answer) VALUES (?,?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setInt(1,4);
pstmt.setString(2,question);
// ... set all your params
pstmt.execute();

答案 2 :(得分:1)

将双引号"更改为单引号',如下所示

String query = "INSERT INTO question (idnum,question) values 
 (4 , "'"+question+"'")";

请注意,只有字符串需要',您可以直接传递整数而不使用',但是,我更喜欢使用PreparedStatement,因为使用SQL注入会更容易和非常强大。

    PreparedStatement pr = conection.prepareStatement("insert into question(...) values(?,?,?,?...)");
    pr.setInt(1,4);
    pr.setString(2,"Some string");
//.....
 pr.executeUpdate();

答案 3 :(得分:0)

试试这个:

 stmt.executeUpdate("INSERT INTO question (idnum, question, option1, option2, option3, option4, answer) VALUES("+4+", '"+question+"', '"+option1+"', '"+option2+"', '"+option3+"', '"+option4+"', '"+answer+"')"