请求支援:java 连接数据库如何实现多条件并列查询?
关注:168 答案:4 mip版
解决时间 2021-02-07 17:28
提问者等妳¬硪唯一鍀执念
2021-02-07 14:13
条件可以有很多,也可以只有一条,但是sql语句都可以执行
最佳答案
二级知识专家千里故人稀
2021-02-07 15:50
JDK5.0新特性,可变参数。可变参数使程序员可以声明一个接受可变数目参数的方法。
注意,可变参数必须是方法声明中的最后一个参数,语法是类型后面加上三个点,比如 int... nums
这就是说,方法需要接收参数是int类型的,到底是几个参数,不知道,可以没有,可以多个,爱写几个写几个,不写拉到。
下面我写了个例子,方法getSentence(String... str)就是,内部还是字符串拼接,最后返回一个字符串,你连接数据库查询的时候,就拿这个字符串查不就行了么,具体自己改一改吧。
public class TestJDBC2 {
public static void main(String[] args) {
System.out.println(getSentence());
System.out.println(getSentence("eid = 1"));
System.out.println(getSentence("eid = 1111", "ename = okok"));
}
public static String getSentence(String... str) {
String s1 = "select * from emp";
String s2 = "select * from emp where ";
if(str.length == 0) {
return s1;
}
else {
for(int i=0; i
s2 += str[i];
if(i != str.length-1) {
s2 += " and ";
}
}
return s2;
}
}
执行以后输出内容如图:
全部回答
1楼繁华初下,心已空
2021-02-07 18:24
拼接SQL,依靠StringBuffer 这个动态字符串来完成sql语句
StringBuffer buffer=new StringBuffer("select * from 表 where 1=1 ");
if(条件1满足){
buffer.append(" and 条件1")
}
if(条件2满足){
buffer.append(" and 条件2")
}
如此类推~
其实方法很多,关键要靠你自己去活用!
2楼薯片软妹
2021-02-07 17:45
string sql = "select carid,type_id,carno, engineno,buyinsuretime,audittime,buydate,status,file_id,cardesc from car where type_id = " + type_id;
string temp = "";
if (!stringutils.isempty(carno)) {
temp += " and carno like '%" + carno + "%' ";
}
if(!stringutils.isempty(engineno))
{
temp += " and engineno like '%"+engineno + "%' ";
}
if(!stringutils.isempty(buydate))
{
temp += " and buydate = date('"+buydate + "') ";
}
if(!stringutils.isempty(status))
{
temp += " and status=" + status+ " ";
}
sql = sql + temp + " order by carid desc ";
这是多条件的例子,可以参考一下
3楼久溺深海心會寒
2021-02-07 16:13
StringBuffer sql = new StringBuffer("select * from tanlename where 1=1");
//判断获取年龄条件是否为空或者为null
if(from.getage!=null&&!"".equals(from.getage))
{
如果有条件 sql 拼接
sql.append("and age="+from.getage);
}
一次类推判断第二个
else if(from.getsex!=null&&!"".equals(from.getsex))
{
在次拼接
sql.append("and sex="+from.getsex);
}
有多少就判断多少 就OK了
````````````
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
→点此我要举报以上信息!←
推荐资讯