mysql语句嵌套查询语句吗_sql多重查询的嵌套语句

前提:

假设现在有一个提交表单,里面有n个查询条件,用户可以填写几个或者不填写来提交。

思想“

判断每个条件用户输入是否为空,不为空则使用sql语句拼接

这是期末项目中用来查询图片的函数的代码:

public List watchImageDao(Image img){

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null;

List li=null;

int index=-1;

int flag=0;

int count=0;

String table_name="t_image";

String sql=table_name;

String[] paramater= {img.getCountry(),img.getName(),img.getPosition(),

img.getResolution(),img.getLongitude(),img.getLatitude(),

img.getAcquisition_time(),img.getScale()

};

boolean[] empty=new boolean[8];

for(int i=0;i<8;i++)

empty[i]=true;

try {

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/happy","root", "root");

if(img.getCountry()!="") {

sql="select* from "+table_name+" where country=?";

empty[0]=false;

flag=1;

count++;

}

if(img.getName()!="") {

if(flag==0)

sql="select* from "+table_name +" where name=?";

else

sql="select* from" + "(" + sql + ")subset_name" + " where name=?";

empty[1]=false;

flag=1;

count++;

}

if(img.getPosition()!="") {

if(flag==0)

sql="select* from "+table_name +" where position=?";

else

sql="select* from" +"(" + sql + ")subset_position" + " where position=?";

empty[2]=false;

flag=1;

count++;

}

if(img.getResolution()!="") {

if(flag==0)

sql="select* from "+table_name +" where resolution=?";

else

sql="select* from" +"(" + sql + ")subset_resolution" + " where resolution=?";

empty[3]=false;

flag=1;

count++;

}

if(img.getLongitude()!="") {

if(flag==0)

sql="select* from "+table_name +" where longitude=?";

else

sql="select* from" +"(" + sql + ")subset_longitude" + " where longitude=?";

empty[4]=false;

flag=1;

count++;

}

if(img.getLatitude()!="") {

if(flag==0)

sql="select* from "+table_name +" where latitude=?";

else

sql="select* from" +"(" + sql + ")subset_latitude" + " where latitude=?";

empty[5]=false;

flag=1;

count++;

}

if(img.getAcquisition_time()!="") {

if(flag==0)

sql="select* from "+table_name +" where acquisition_time=?";

else

sql="select* from" +"(" + sql + ")subset_acquisition_time" + " where acquisition_time=?";

empty[6]=false;

flag=1;

count++;

}

if(img.getScale()!="") {

if(flag==0)

sql="select* from "+table_name +" where scale=?";

else

sql="select* from" +"(" + sql + ")subset_scale" + " where scale=?";

empty[7]=false;

flag=1;

count++;

}

if(count==0) {

sql="SELECT* FROM "+table_name;

}

ps=conn.prepareStatement(sql);

for(int i=0;i

for(int j=0;j<8;j++) {

if(!empty[j]) {

ps.setString(i+1, paramater[j]);

empty[j]=true;

break;

}

}

}

rs=ps.executeQuery();

li=new ArrayList<>();

while(rs.next()) {

Image i=new Image();

i.setCountry(rs.getString("country"));

i.setName(rs.getString("name"));

i.setPosition(rs.getString("position"));

i.setResolution(rs.getString("resolution"));

i.setLongitude(rs.getString("longitude"));

i.setLatitude(rs.getString("latitude"));

i.setAcquisition_time(rs.getString("acquisition_time"));

i.setScale(rs.getString("scale"));

li.add(i);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

return li;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值