看如下一条sql语句
String sql="SELECT * FROM bookBasicInfo,bookTypeInfo
WHERE bookBasicInfo.BelongType=bookTypeInfo.BookTypeID
AND bookBasicInfo.bookName like ? AND" +
"bookBasicInfo.BelongType=?";
ps.setString(1, "%"+bookName+"%");
ps.setInt(2, typeId);
这是一条根据图书名称和图书类型进行查询的sql语句,可能咋一看并没有什么毛病,如果将
上述sql语句在java环境中执行会抛出如下异常
java.sql.SQLException: ORA-00933: SQL 命令未正确结束
这个问题的错误原因,就是一个空格的问题,由于sql过长,用+进行拼接,但是在用+进行拼接的时候是原样进行拼接,
在“+”那处,会变成
...bookBasicInfo.bookName like ? ANDbookBasicInfo.BelongType=?
这样的sql在执行的过程中,当然会报错啦!
解决方式:只需要在最后一个AND后面或者bookBasicInfo.BelongType前面添加“空格”,问题解决了
如果不细细的观察sql语句,这个错误是非常难以发现的。
如果在开发过程中出现这样的问题,可能需要耗费我们很多时间
本文介绍了一条根据图书名称和类型查询的SQL语句在Java环境下执行时遇到的异常情况:ORA-00933: SQL命令未正确结束。原因是SQL语句在使用+进行字符串拼接时产生的格式问题导致。通过在AND关键字前后添加空格解决了该问题。
5942

被折叠的 条评论
为什么被折叠?



