Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC从mysql检索数据_Java_Mysql_Sql_Database_Jdbc - Fatal编程技术网

Java 使用JDBC从mysql检索数据

Java 使用JDBC从mysql检索数据,java,mysql,sql,database,jdbc,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://loc

我试图通过
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 ?
您应该准备一条语句,绑定一个包含通配符的字符串(
%
),然后执行这个准备好的语句:

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

阅读。

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

WHERE name LIKE '?%'
这是不正确的。该条款应为:

WHERE name LIKE ?
您应该准备一条语句,绑定一个包含通配符的字符串(
%
),然后执行这个准备好的语句:

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

阅读。

如果我没说错的话,你想搜索名字,而这个名字也可能是其他名字的一部分。 例如,如果u型千斤顶

Jackson、Helen Jack的值也应该从数据库中检索

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 '%nname%'";**
        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);
        }

如果我没说错的话,你想搜索名字,而这个名字也可能是其他名字的一部分。 例如,如果u型千斤顶

Jackson、Helen Jack的值也应该从数据库中检索

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 '%nname%'";**
        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);
        }

我的问题是我想不出一种方法来让bufferedreader检查名称(在数据库和控制台中的单用户输入中),我对你的评论没有任何意义。你想达到什么目标?就好像我是一个5岁的男孩一样解释它。用户在计算机前面。应该怎么办?对不起,我的英语不是很好,我试图实现的是,当用户在控制台中输入一个名称时,我希望我的应用程序检查该名称是否在数据库中可用。然后执行查询,如果其结果集不是空的,则数据库包含一个具有该名称的宠物。如果它是空的,那么它不包含具有该名称的宠物<如果结果集为空,则code>rs.next()将返回false。如果您想要与输入的名称完全匹配,您不应该像使用通配符一样使用
,但是
=
。很抱歉打扰您,但我还是觉得有点迷茫,我添加了这个方法,但仍然没有结果:If(rs.next()){petn=rs.getString(“petname”);System.out.println(“test”+petn);}我的问题是我想不出一种方法来让bufferedreader检查名称(在数据库和控制台中的单用户输入中),我对你的评论没有任何意义。你想达到什么目标?就好像我是一个5岁的男孩一样解释它。用户在计算机前面。应该怎么办?对不起,我的英语不是很好,我试图实现的是,当用户在控制台中输入一个名称时,我希望我的应用程序检查该名称是否在数据库中可用。然后执行查询,如果其结果集不是空的,则数据库包含一个具有该名称的宠物。如果它是空的,那么它不包含具有该名称的宠物<如果结果集为空,则code>rs.next()
将返回false。如果您想要与输入的名称完全匹配,您不应该像使用通配符一样使用
,但是
=
。很抱歉打扰您,但我还是觉得有点迷茫,我添加了这个方法,但仍然没有结果:If(rs.next()){petn=rs.getString(“petname”);System.out.println(“test”+petn);}