我是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+")");
如何修复查询?
答案 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+"')"