使用ORA-00911插入查询失败:无效的字符异常

时间:2018-02-05 15:04:21

标签: java sql insert

我正在尝试使用下面的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)

任何指针?

2 个答案:

答案 0 :(得分:1)

你错过了一个'在dateFormat的开头

'101','"+userName+"', "+dateFormat.format(date)+"'

'101','"+userName+"', '"+dateFormat.format(date)+"'

sql中的字符串连接也是邪恶使用旧的setParameter()

答案 1 :(得分:0)

INSERT没有正确的语法,数字列和值应匹配。

您指定了5列,但在VALUES中您有3个值。他们的数字和序列必须匹配。