在Java中嵌入SQL语句进行模糊查询,能不能先提示用户输入一个关键词,再根据关键词来查询?那这个

在Java中嵌入SQL语句进行模糊查询,能不能先提示用户输入一个关键词,再根据关键词来查询?那这个SQL语句的like后面的要怎么填呀?

第1个回答  2015-12-10
PreparedStatement pstm = conn.PreparedStatement("select * from t where t.name like ?");
pstm.setString(1, "myName");
rs = pstm.executeQuery();追问

没看懂,请解释一下,谢谢

追答

ublic class Shbk{
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
public static final String dburl =
"jdbc:mysql://localhost:3306/wang";
public static final String dbuser = "root";
public static final String dbpass = "wang";
public Shbk(String name,String book,String writer)throws Exception{
Connection coon=null;
PreparedStatement psmt=null;
ResultSet rs =null;
JFrame frame =new JFrame("查询");
String[] titles={"id","姓名","书名","作者"};
Object[][] userinfo=new Object[10][4];
JButton but=new JButton("确定");
String sql="SELECT*"+" FROM library WHRERE name LIKE ? OR book
LIKE ? OR writer LIKE ?";
Class.forName(DBDRIVER);
coon=DriverManager.getConnection(dburl,dbuser,dbpass);
psmt=coon.prepareStatement(sql);
psmt.setString(1,"‘%"+name+"%’");
psmt.setString(2,"‘%"+book+"%’");
psmt.setString(3,"‘%"+writer+"%’");
rs=psmt.executeQuery();
for(int i=0;rs.next();i++){
userinfo[i][0]=rs.getInt(1);
userinfo[i][1]=rs.getString(2);
userinfo[i][2]=rs.getString(3);
userinfo[i][3]=rs.getString(4);
}

本回答被网友采纳
第2个回答  2015-12-10
like '%关键字%'追问

如果关键字是用户输进去的,不是常量,怎么办?

追答

字符串拼接,
String str=""//用户输入
sql=" select * from table where xxx like'%"+str+"%'"

第3个回答  2015-12-10
... like '%用户输入的关键字%'追问

请问不用双引号隔空字符串之类吗?

那如果是输入一个数值,名字叫minprice,怎么查找比这个更贵的东西,在"Where price(表明)>"后面应该怎么补充啊

追答

你问的不是sql语句怎么写吗?那就对了啊,%在数据库里代表的就是通配;
如果是输入一个数值,名字叫minprice,怎么查找比这个更贵的东西:

... where price > minprice的值 不就是了吗?

minprice是什么?数值?还是一个字段名?

追问

提示用户输入一个价格,用minprice这个变量来存放用户输入的数据

然后怎么把这个东西放到SQL语句里面

用户输入的关键字要怎么嵌入SQL语句中?之前写的都是模糊查询一个已知的关键字

追答

额,才明白。。。楼下的方法就可行了。
用PreparedStatement类,
PreparedStatement pstm = conn.PreparedStatement("select 要查的字段名 from 表名 where price > ?");
pstm.setString(1, minprice); //用minprice替代上面的'?'
那这个也不能算模糊查询啊~~~

相似回答