在Java中嵌入SQL语句进行模糊查询,能不能先提示用户输入一个关键词,再根据关键词来查询?那这个SQL语句的like后面的要怎么填呀?
没看懂,请解释一下,谢谢
追答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);
}
如果关键字是用户输进去的,不是常量,怎么办?
追答字符串拼接,
String str=""//用户输入
sql=" select * from table where xxx like'%"+str+"%'"
请问不用双引号隔空字符串之类吗?
那如果是输入一个数值,名字叫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替代上面的'?'
那这个也不能算模糊查询啊~~~