多条件组合查询Sql语句巧用StringBuffer

来源:互联网 发布:灯光演播室软件 编辑:程序博客网 时间:2024/06/18 02:04

StringBuffer的使用:

线程安全的可变字符序列。一个类似于 String的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer上的主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而insert 方法则在指定的点添加字符。

在写sql语句时,先把各个条件加进去,然后对StringBuffer修改

先举一个简单的例子:

import java.util.Scanner;public class TestStringBuffer {public static void main(String[] args) {StringBuffer sb=new StringBuffer("select * from tcmjkc where");Scanner scan=new Scanner(System.in);int i=scan.nextInt();int j=scan.nextInt();if(i>0){sb.append(" and helloii");}else{sb.append(" and byebyeii");}if(j>0){sb.append(" and hellojj");}else{sb.append(" and byebyejj");}System.out.println(sb.toString().replaceFirst(" and", ""));//判定之后先把各个条件加进去,然后对StringBuffer修改//把第一个" and"去掉,注意and前面有一个空格//注意书写sql语句时,要严格注意格式,空格、单引号、双引号等}}
输出结果:

1 1select * from tcmjkc where helloii and hellojj

在做组合查询时,可能会用到多个控件,这里以JRadioButton举例:

//model组合查询//传入JRadioButton是否被选中,如果选中,就加入条件//先放入where,最后去掉第一个 " and"public ResultSet modelsearch(Connection con,Model model,JRadioButton fl_radioButton,JRadioButton hd_radioButton,JRadioButton kd_radioButton,JRadioButton kcsl_radioButton) throws Exception{StringBuffer sb=new StringBuffer("select * from tcmjkc where");PreparedStatement pstmt = null;if(fl_radioButton.isSelected()){sb.append(" and 分类 like'%"+model.getFl()+"%'");}if(hd_radioButton.isSelected()){sb.append(" and 厚度 like'%"+model.getHd()+"%'");}if(kd_radioButton.isSelected()){sb.append(" and 宽度 like'%"+model.getKd()+"%'");}if(kcsl_radioButton.isSelected()){sb.append(" and 库存数量 = "+model.getKcsl());}if(!fl_radioButton.isSelected()&&!hd_radioButton.isSelected()&&!kd_radioButton.isSelected()&&!kcsl_radioButton.isSelected()){//如果都没有选中,就去掉where//20.26sb.delete(20, 26);}else{ pstmt=con.prepareStatement(sb.toString().replaceFirst(" and", ""));}return pstmt.executeQuery();}


0 0
原创粉丝点击