日期:2014-05-18  浏览次数:20713 次

sql循环语句问题,请教一下各位
简化一下我的问题
表A,里面字段a1,a2,a3
另外一个数组   Array[m]

现在要查询A表   ,查询条件:字段a1的值等于数组Array[m]里值
我的方法:
......
for(int   i=0;i <m;i++)
{
        ......
        sql= "select   *   from   A   where   a1= ' "+Array[i]+ " '   ";
        while(rst2.next())
        {
                ......
        }
      ......
}
....
因为实际SQL语句比这复杂很多,所有这样循环做感觉很慢,有没有在SQL语句里面完成循环操作的方法,或者其他方法啊,请教各位一下


------解决方案--------------------
sql= "select * from A “
while(rs!=null&&rs.next){
boolean flag=false;
int a=rs.getInt(1);
for(int i=0;i <m;i++){
if(a==Array[m]){
flag=true;
break;
}
if(flag)
a满足你的条件,后面完成你的处理;
}

}
------解决方案--------------------
select * from A where a1=Array[0] or a1=Array[1] or ... a1=Array[m]
------解决方案--------------------
尽量不要循环中套sql,这样效率比较低而且错误率比较高.
String name= " ";
for(int i=0;i <m;i++)
{
name=Array[i];
}
sql= "select * from A where a1= ' "+name+ " ' ";
while(rst2.next())
{
......
}
------解决方案--------------------
同意2楼的方法
------解决方案--------------------
楼上几位说的已经差不多解决问题了
我只简单说一句,复杂的多次重复应用的sql最好写成存储过程
------解决方案--------------------
恩,谢谢 各位的指教
------解决方案--------------------


如果要在循环中就用PreparedStatement.
------解决方案--------------------
对阿 ,很好的 给分啊