作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有文本列的表格,我想搜索包含单词的所有行
String sql="Select text from MyTable where text REGEXP '[[:<:]]?[[:>:]]'
myPreparedStmt=myCon.prepareStatement(sql);
myPreparedStmt.setString( 1, word); //---> this line has an error "SQL Exception: No parameters defined during prepareCall()"
如果我运行以下查询,那就没问题,但这是有风险的,因为黑客可以注入(inject)错误的脚本:
String sql="Select text from MyTable where text REGEXP '[[:<:]]"+word+"[[:>:]]'
myPreparedStmt=myCon.prepareStatement(sql);
那么 myPreparedStmt.setString 如何在 Java 中实现 Regexp Sql 呢?
最佳答案
使用sql="Select text from MyTable where text REGEXP CONCAT('[[:<:]]', ?, '[[:>:]]')
或者在 Java 中添加正则表达式:
String sql = "Select text from MyTable where text REGEXP ?";
myPreparedStmt = myCon.prepareStatement(sql);
myPreparedStmt.setString(1, "[[:<:]]" + word + "[[:>:]]");
关于java - 如何在Java中为Regexp Sql使用myPreparedStmt.setString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284134/
我是一名优秀的程序员,十分优秀!