这是我的问题
SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='"+titleName+"'";
通过使用标题,我试图获得它的描述。
对于示例,如果tileName="Worth for money";
(不带撇号),则查询将为:
SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='Worth for money';
我拿到产量了。
但如果titleName="Can't beat the product";
(带撇号)
SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='Can't beat the product';
我得到org.hibernate.QueryException:应为‘’,找到‘EOF’
有什么办法可以避免这个问题吗?
3条答案
按热度按时间7uhlpewt1#
使用占位符。它还有助于防止SQL注入:
如果您确定您的查询将只给出一条记录,那么使用Query接口的Unique eResult()方法,而不是使用list()。
更多详情请参见查询接口here文档
cgyqldqp2#
您可以使用
PreparedStatement
而不是简单的查询,让PreparedStatement
为您处理撇号和其他特殊字符。请参阅this Oracle文档。第二种方法是使用StringEscapeUtils库。请参阅文档。
x33g5p2x3#