我正在尝试使用下面的java代码行将数据插入到表中,并且使用executeUpdate(sql)失败并出现以下错误:
String userName = "some value";
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
Date date = new Date();
String sql = "INSERT INTO `GenericUserPasswordRequest`(ID,USERNAME,USERDATE) VALUE ('101','"+userName+"', '"+dateFormat.format(date)+"')";
stmt.executeUpdate(sql);
堆栈跟踪:
java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:931)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1707)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1670)
at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:310)
at com.nk.EmailFormController.handleFormSubmit(EmailFormController.java:198)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
任何指针?
答案 0 :(得分:1)
你错过了一个'在dateFormat的开头
'101','"+userName+"', "+dateFormat.format(date)+"'
'101','"+userName+"', '"+dateFormat.format(date)+"'
sql中的字符串连接也是邪恶使用旧的setParameter()
答案 1 :(得分:0)
INSERT
没有正确的语法,数字列和值应匹配。
您指定了5列,但在VALUES
中您有3个值。他们的数字和序列必须匹配。