sql无效字符引起的执行sql语句报错的解决方法

发布时间:2019-11-23编辑:脚本学堂
sql无效字符引起的执行sql语句报错的解决方法

错误是在执行sql语句的时候发出的,信息如下:
[default][2012-11-22 11:35:58,552][ERROR]
[com.primeton.common.connection.impl.synchronization.TraceLoggerStatementSynchronization:49]
Sql[INSERT INTO ASE_SYSTEM_LOG (LOGID,USERID,USERNAME,LOGINTIME) VALUES(?,?,?,?);] execute error.
java.sql.SQLException: ORA-00911: 无效字符
程序代码如下:
 

复制代码 代码如下:
String sql="INSERT INTO ASE_SYSTEM_LOG (LOGID,USERID,USERNAME,LOGINTIME) VALUES(?,?,?,?);";
con = this.getDataSource().getConnection();
ptt=con.prepareStatement(sql);
ptt.setLong(1, logId);
ptt.setLong(2, userId);
ptt.setString(3,userName);
ptt.setString(4, loginDate);
ptt.executeUpdate();

当执行ptt.excuteUpdate()方法的时候,直接报以上的错。
以为是sql中参数赋值有问题,但是将sql语句直接copy到PLSQL中执行,却没问题,纠结了好久,原来是
"INSERT INTO ASE_SYSTEM_LOG (LOGID,USERID,USERNAME,LOGINTIME) VALUES(?,?,?,?);" 中多了一个“;”号,坑哥啊。
好啦,如果有报字符异常问题的盆友可以参考下。