java多条件sql查询_jdbc 的sql语句如何写多条件查询

jdbc 的sql语句怎么写多条件查询

有个表 有id age name sex class等字段

想做个jdbc的多条件查询 这些条件可以为空也可以不为空

简单的页面像这样:

b5d2cb8ae0898b6ba750ec090e09089c.png

用传统的ps = con.prepareStatement(sql);

ps.setString(1, name);这种方法 好像不行

求大大们指点啊

449605e99a174de92b801dcfa2556c6a.gif

jdbc

sql

java

dao

分享到:

------解决方案--------------------

你的问题是可变参数的SQL组装。

这个要么就借助数据访问组件,比如Hibernate、MyBatis之类的;要么就只能自己写分支条件来处理。

另外如果是确定使用某种数据库(比如Oracle),或者使用了支持NamedParameterStatement,可以这样:

import oracle.jdbc.OraclePreparedStatement; // 这个是Oracle数据库的驱动才提供的

String sql = "Select * From employees Where 1=1 And (:pName IS null OR first_name = :pName) And (:pSalary IS null OR salary = :pSalary)"; // 注意这句YD的SQL

Connection con = openConnection(); // 数据库连接获取略

OraclePreparedStatement stat = (OraclePreparedStatement) con.prepareStatement(sql);

stat.setObjectAtName("pName", null);

stat.setObjectAtName("pSalary", 2500);

ResultSet rs = stat.executeQuery();

int cols = rs.getMetaData().getColumnCount();

while (rs.next()) {

for (int i = 1; i <= cols; i++) {

System.out.print(rs.getString(i) + "\t");

}

System.out.println();

}

不过总的来说还是建议老老实实用成熟的数据访问组件。

------解决方案--------------------

一个传参费这么大的劲?

Stringbuffer  sql="select * from student t ";

if( 字段中至少有一个不为空或者""){

sql.append(" where ");

list.add(val1);

}

if(id != null

------解决方案--------------------

!"".equale(id)){

sql.append(" t.id=?");

list.add(val2);

}

if(name!=null

------解决方案--------------------

!"".equale(name)){

sql.append( " t.name=? ");

list.add(val3);

}

....

ps = con.prepareStatement(sql);

for (...list...){

ps.setString(i, list.get(i));

}

....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值