来源于:http://www.cnblogs.com/reine98/p/6180472.html
看如下一条sql语句
1 2 3 4 5 6 | 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语句,这个错误是非常难以发现的。如果在开发过程中出现这样的问题,可能需要耗费我们很多时间