JDBC 模糊查询

苏乐池 2019-06-06 11:49:37
package com.student.www;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Test_Stu?charactEncoding=utf8",
"root", "root");

Statement stat = conn.createStatement();

String input = new Scanner(System.in).nextLine();

String sql = "select * from Student where name like ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, "%"+input+"%");
ResultSet rs = pst.executeQuery();

//ResultSet rs = stat.executeQuery("select * from Student");

while(rs.next()) {

System.out.println("序号:" + rs.getInt("id") + " 名字:" + rs.getString("name") + " 学号:" + rs.getInt("stuID")
+ " 性别:" + rs.getString("gender") + " 地址:" + rs.getString("address"));

}
rs.close();
conn.close();
stat.close();

}
}


//数据库什么都是对的,可以只要是like的模糊查询都不会输出,求大佬解释一下
...全文
369 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏乐池 2019-06-06
  • 打赏
  • 举报
回复
mysql> select * from Student where name like '%琪%';
+----+-----------+-------+--------+--------------------------------+
| id | name | stuID | gender | address |
+----+-----------+-------+--------+--------------------------------+
| 1 | 琪琪 | 22 | 女 | 上海市浦东新区张江镇 |
| 5 | 琪花 | 11 | 女 | 上海市浦东新区花木镇 |
| 6 | 周琪琪 | 12 | 女 | 上海市金山区 |
+----+-----------+-------+--------+--------------------------------+
3 rows in set (0.00 sec)




package com.student.www;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Test_Stu?charactEncoding=utf8",
"root", "root");

Statement stat = conn.createStatement();

String input = new Scanner(System.in).nextLine();

String sql = "select * from Student where name like concat('%" + input + "%')";
System.out.println(input);
System.out.println(sql);
ResultSet rs = stat.executeQuery(sql);
// PreparedStatement pst = conn.prepareStatement(sql);
// pst.setString(1, "%"+input+"%");
// ResultSet rs = pst.executeQuery();

// ResultSet rs = stat.executeQuery("select * from Student");
while (rs.next()) {
System.err.println(2);
System.out.println("序号:" + rs.getInt("id") + " 名字:" + rs.getString("name") + " 学号:" + rs.getInt("stuID")
+ " 性别:" + rs.getString("gender") + " 地址:" + rs.getString("address"));

}
rs.close();
stat.close();
conn.close();
}
}


//琪

select * from Student where name like concat('%琪%')
//同样的输入
牛肉滚蛋花 2019-06-06
  • 打赏
  • 举报
回复
首先看看你的sql在数据库里能不能模糊查询,在跟后台的sql作比较,有可能是参数的问题
苏乐池 2019-06-06
  • 打赏
  • 举报
回复
String input = new Scanner(System.in).nextLine();

String sql = "select * from Student where name like '%"+input+"%'";
ResultSet rs = stat.executeQuery(sql);


是这样的,我是希望用户自己输入名字中的部分(input)来模糊查询,只是这样我输入了以后不会跳出模糊查询的结果。
usecf 2019-06-06
  • 打赏
  • 举报
回复
like ?" 你需要like 什么呢? 具体要带上参数 你直接?问号 那你还不如select * from Student就行 你要这样用的: SELECT * FROM Persons WHERE City LIKE '%lon%' SELECT * FROM Persons WHERE City LIKE 'N%'

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧