如何在使用预编译SQL的情况下做不定项查询例如有5个列作为查询条件我选择其中2个列来进行查询问题是如果我使用的SQL为预编译的话不使用那个东西对于防止注入攻击比较麻烦

解决方案 »

  1.   

    把sql中where后面的取出来,根据and把每个条件放到数组中,根据数组中的下标和数组中字符串的值来设置
      

  2.   

    可能我没有说明白例如我有5项其中第2、3、5项是有用户输入的换句话说拼起来就是有3个?用数组的话如何确定这3个?的位置呢?就是db.setString(1,id);类似这个东西我不知道应该如何生成
      

  3.   

    比如"where a=? and b=? and c=?"
    先把a ,b,c放到数组中
    然后对数组循环一下,判断a的值下标是几,然后就db.setString(下标+1,a)
      

  4.   

    如果是有a,b,c,d,e5项其中作为查询条件的有a,b,c或者是其他的那么应该怎么写呢?能不能写出具体的核心程序来呢?
      

  5.   

    for (int i=0;i<arr.lenght;i++)
    {
       if (arr[i].equalsIgnoreCase("a"))
         {
          db.setString(i+1,a)      }
       elseif (arr[i].equalsIgnoreCase("b"))

          db.setString(i+1,b)      }
        ....把所有的条件按上面的写一下就行了呀
    }