java - 使用 JDBC 从 mysql 中检索数据

标签 java mysql sql database jdbc

我正在尝试通过 BufferedReader 使用 JDBC 从 SQL 表中检索一些数据,我为此执行编写的代码:

System.out.println("Type a name");
    String nname = br.readLine();

        Class.forName("com.mysql.jdbc.Driver");
        Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/VetTest", "root", "root");
        Statement stmt=(Statement) con.createStatement();
        String query = "select * from Pet WHERE name LIKE '?%'";
        ResultSet rs=(ResultSet) stmt.executeQuery(query);

        while(rs.next()) 
            System.out.println(rs.getString("name"));

        if (petn.equals(query)) {
        System.out.println("Searching names.." + nname + query);
        }

我不知道我是否做错了,所以总结一下我的问题,我正在尝试检索一些数据,这取决于用户在控制台中输入的内容。例如。我正在尝试在我的数据库中搜索名字 Jack 我希望我的应用程序搜索此人的名字或类似的人名。

当我输入一个宠物名字时,我总是得到结果(即使宠物名字在我的数据库中可用):

没有这样的名字

最佳答案

你没有告诉我们问题是什么,但我看到了一个问题:

WHERE name LIKE '?%'

这是不正确的。该子句应该是

WHERE name LIKE ?

你应该准备一个语句,绑定(bind)一个包含通配符(%)的字符串,然后执行这个准备好的语句:

PreparedStatement stmt = con.prepareStatement("select * from Pet WHERE name LIKE ?");
stmt.setString(1, name + "%");
ResultSet rs = stmt.executeQuery();

阅读the tutorial about prepared statements .

关于java - 使用 JDBC 从 mysql 中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753989/

相关文章:

java - JTable 不显示我的 xml 数据

Java 反射 API : Invoking a method without parameters

关于数据库的 Android 通知

php - 将固定长度的文本文件转换为 SQL

php - 比较表中同一列的不同行

sql - 哪个更好 : Distinct or Group By

java - 如何用JNI和C检测鼠标点击?

java - 使用 spring 和 Hibernate 的基本 CRUD 应用程序

php - 在遍历查询结果时识别重复项

mysql - 两个表上的 PL/SQL SELECT