gpt4 book ai didi

java - 如何在Java中为Regexp Sql使用myPreparedStmt.setString?

转载 作者:行者123 更新时间:2023-11-30 04:03:46 26 4
gpt4 key购买 nike

我有一个带有文本列的表格,我想搜索包含单词的所有行

  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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com