【问题标题】:JAVA MySql multiple word searchJAVA MySql 多词搜索
【发布时间】:2012-11-18 22:58:12
【问题描述】:

我在 MySql 中有一个数据库,其中有一个名称列,其中包含多个单词(描述)。我通过eclipse用java连接到数据库。我有一个搜索,如果只有名称字段包含一个单词,则返回结果。 id:........姓名:........信息:............ ..........类型:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> 1.......气球............大红色气球......大>>>>>>>>>>>>>>>>>>>>>> 2.......................房子............昂贵美丽............豪华>>> >>>>>>>>>>>>>>>>>>>>>>>> 3……鸡翅…………炸翅……好吃

这些只是随机词,但作为示例,我的搜索只能看到 ex。气球然后显示信息, 但如果我输入鸡翅,它什么也不做。所以有可能以某种方式从包含多个单词的列中搜索? 这是我下面的搜索代码

import java.io.*;
import java.sql.*;
import java.util.*;

class Search {

public static void main(String[] args) {
    Scanner inp``ut = new Scanner(System.in);

    try {
        Connection con = DriverManager.getConnection(
                "jdbc:mysql://example/mydb", "user", "password");
        Statement stmt = (Statement) con.createStatement();

        System.out.print("enter search: ");
        String name = input.next();

            String SQL = "SELECT * FROM menu where name LIKE '" + name + "'";

        ResultSet rs = stmt.executeQuery(SQL);

        while (rs.next()) {
            System.out.println("Name: " +rs.getString("name"));
            System.out.println("Description:  " + rs.getString("info") );
            System.out.println("Price: " + rs.getString("Price"));

        }

    } catch (Exception e) {
        System.out.println("ERROR: " + e.getMessage());
    }
}
} 

【问题讨论】:

    标签: java mysql search


    【解决方案1】:

    按照您现在执行搜索的方式,一开始您很容易受到sql injection 的攻击,并且可能希望使用 JDBC 的 PreparedStatement 而不是普通语句。

    其次,我建议在空格处拆分用户输入并使用“OR”单独搜索所有术语。

    示例:用户输入house expensive beautiful

    搜索将是:

    SELECT * FROM menu where name LIKE '%house%' OR name LIKE '%expensive%' OR name LIKE '%beaufitful%'
    

    我已经放置了百分号,因为如果您要搜索“house”,则只会匹配确切的术语“house”。通过 "%house%" 搜索,字符串 "somethingbeforehouse" 和 "houseandsomethingafter" 也会被找到。

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2011-10-06
      • 2013-03-13
      • 2012-01-18
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多