在Java中使用一个或更多单词搜索整个数据库
Searching entire database with one word or more in java
为了防止SQL注入我试图避免使用WHERE Surname LIKE '"search_txt.getText()"'
...但是使用preparedStatement
留下?空白,换句话说,SQL语句甚至在TextField中输入了正确的搜索值...在行pst1.setString(1, search_txt.getText()+"%");
private void SearchActionPerformed(java.awt.event.ActionEvent evt) {
try{
sql = "SELECT Title, Forename, Surname, Role FROM AcademicInfo WHERE Surname LIKE ? OR Forename LIKE ?";
PreparedStatement pst1 = conn.prepareStatement(sql);
ResultSet rs2 = pst1.executeQuery();
if (rs2.next()) {
pst1.setString(1, search_txt.getText()+"%");
pst1.setString(2, search_txt.getText()+"%");
System.out.println(sql);
JOptionPane.showMessageDialog(null, "Found Academic");
Update_table(sql);
} else {
System.out.println(sql);
JOptionPane.showMessageDialog(null, "No Results Found");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
这是像Apache Lucene这样的全文搜索引擎的绝佳用例
使用mySQL进行此操作的最简单方法是使用FULLTEXT
搜索。正如您所说,它没有搜索"整个SQL数据库",但可以搜索很多列。这很好。
语法与您的使用方式有所不同。这可能会为您带来技巧。
SELECT Title, Forename, Surname, Role
FROM AcademicInfo
WHERE MATCH(Surname, Forename) AGAINST('searchterm' IN BOOLEAN MODE)
我会把它留给您,以使SQL语句适应Java。
这是文档。
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
相关文章:
- 文本文件中的单词链表
- 查询SQLite数据库中的日期
- 在指针的帮助下,文本文件中单词的频率
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何根据单词在文本中出现的概率输出单词
- 如何在ArangoDb AQL查询中指定数据库
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 如何用for循环在c++中生成单词三角形
- 将数字转换为单词
- 使用if-else将数字转换为单词
- 无法在C++中建立与MySQL数据库的连接
- C++-字符串是否包含一个带有简单循环的单词
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 将类实现到数据库程序中
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 如何轻松快速地存储大型单词数据库?
- 在Java中使用一个或更多单词搜索整个数据库