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);}