不是字符串拼接成SQL语句,而是封装的:java里批处理:“SELECT * FROM a WHERE t=?”,然后用赋值语句为参数赋值。
字符串拼接成SQL语句好办,用条件判断就行,但是被SQL注入的危险很大,所以我想要封装的。
在网上搜索了半天,只看到一个解决办法:先把数据都读入临时表,然后根据条件一项一项地筛选。但是我觉得这个办法是不是消耗太大?
持久化框架Hibernate也是个办法,但是这些框架有很多设置文件,我的工程里数据库解构还没完全定下来,要是有修改就麻烦了,而且支持java的虚拟主机比较便宜的很多都禁止使用Hibernate之类。所以我目前还是想用普通的方法。

解决方案 »

  1.   

    SELECT * FROM a WHERE t in ('av','es','3re')
      

  2.   

    我考虑过用数组的。用2个数组,一个存储条件,一个存储参数值,但是还有个函数的选择问题:如果查询条件是整数,那么设置参数要用setInt()方法,而如果查询条件是字符串,那么设置参数要用setString()方法,这就不好办了
      

  3.   

    我现在是用两个数组(我用的java,其实是两个向量Vector),根据提交的查询条件是否唯空来生成查询语句的条件,一个向量存储值,另一个存储数据类型,然后在生成查询语句时根据地二个向量选择不同的赋值方法