JavaSQLException-ORA-0933:命令未正确结束
我对下面方法中的SQL字符串查询感到困惑。它显示了绝对正确的结果,尽管是谁在oracle数据库中创建了行,但引发了以下异常:ORA-0933:命令未正确结束。我试图找到解决办法,但没有结果 出什么事了?你能帮我吗 提前谢谢您,对于英语不好,我深表歉意JavaSQLException-ORA-0933:命令未正确结束,java,sql,Java,Sql,我对下面方法中的SQL字符串查询感到困惑。它显示了绝对正确的结果,尽管是谁在oracle数据库中创建了行,但引发了以下异常:ORA-0933:命令未正确结束。我试图找到解决办法,但没有结果 出什么事了?你能帮我吗 提前谢谢您,对于英语不好,我深表歉意 public void insertMemberAction() { String query = "INSERT INTO MEMBERS VALUES(" + jMnoTxt.getText() + ", '" +
public void insertMemberAction() {
String query = "INSERT INTO MEMBERS VALUES(" + jMnoTxt.getText() + ", '" +
jLastnameTxt.getText() + "', '" + jFirstnameTxt.getText() + "', '" +
jAddressTxt.getText() + "', '" + jRegistrationDateTxt.getText() + "')";
java.sql.Statement insertStmt;
try {
insertStmt = DvdClubJFrame.con.createStatement();
insertStmt.executeUpdate(query);
insertStmt.close();
} catch (java.sql.SQLException e) {
javax.swing.JOptionPane.showMessageDialog(this, e.getMessage());
}
}
使用PreparedStatements,或使用apache common的
StringEscapeUtils
尝试添加“;”来转义参数在末尾,您应该使用准备好的语句,正如Freaky Thommi所说的,尝试在查询末尾添加分号。另外,为什么传递的第一个值没有引号?以及query
value在executeUpdate()调用之前的外观如何?您可能会错过一些”
,或者某个参数本身的值中有”
,或者jMnoTxt
是空字符串?正如其他人所说,使用PreparedStatement
@DanTemple:那是错误的。如果您传递了一个
作为语句的字符串的一部分。executeUpdate()
将导致“非法字符”错误。仅使用PreparedStatement。如果您逃避参数,您将忘记一个。是的,我同意,PreparedStatement是最佳实践。是的,一路使用PreparedStatement,不要用非常不安全的语句混日子,除非您喜欢修复SQL注入黑客