我的查询语句是相同的,比如SELECT ID FROM ABC WHERE NAME=:NAME
但有多个查询条件,如‘张三’,‘李四’,‘王五’,是否可以OracleParameter.value=names,names是一个字符串数组,里面是张三、李四王五等,然后查询结果查出这三个的ID结果。我要解决的问题是相同的查询语句,因为不同的条件,需要程序调用数据库查询多次,非常消耗时间,因为之前使用过insert和update的这种参数是数组的方式进行多条数据新增或更新的方式,也希望能够通过这种方式进行多条的查询,降低查询时间。
查询语句因程序逻辑原因,无法更改为如in或者其他的了,只能是这个,所以寄希望于是否有这种方式,请大神帮忙~~~
但有多个查询条件,如‘张三’,‘李四’,‘王五’,是否可以OracleParameter.value=names,names是一个字符串数组,里面是张三、李四王五等,然后查询结果查出这三个的ID结果。我要解决的问题是相同的查询语句,因为不同的条件,需要程序调用数据库查询多次,非常消耗时间,因为之前使用过insert和update的这种参数是数组的方式进行多条数据新增或更新的方式,也希望能够通过这种方式进行多条的查询,降低查询时间。
查询语句因程序逻辑原因,无法更改为如in或者其他的了,只能是这个,所以寄希望于是否有这种方式,请大神帮忙~~~
我估计你并没有真正看过那些所谓的 insert、update 语句。
目前的状况是这样的,查询语句是用户根据实际情况写的,包含了变量,然后程序根据用户写的查询语句,从excel中获取相应的值,以参数的方式赋予查询语句参数中,比如,用户写了SELECT ID FROM ABC WHERE name=:name,然后EXCEL中一列就是用户名,程序会将此列数据全部挨个使用这个查询语句将name转变为ID值,这也是为什么我无法修改查询语句为in或什么的。如果只是where后面有参数还好说,可以用字符串截取、拼接修改为exist什么的,但是很多时候还有left join后面就带参数的。那么这种情况是否有什么好的解决方案能加快查询效率。我尝试过的有:
1.多条语句拼接,然后一次查询,这个在程序环境中实现不适用,因为存在变量的问题。
2.减少conn.open(),conn.close().因为程序使用DbHelperOra通用类,所以每次查询都会开闭一次,为此专门写了一个连续查询,手动关闭的方法,但是效果也不是很明显。
是否还有其他方式可以解决此类问题?
可惜的是,目前看到的所有数据库帮助类的参数化方法都不支持他
幸好你还可以使用字符串拼接方式构造 SQL