我想知道是否有办法将ArrayList(或任何类型的List)绑定到PreparedStatement,最终将用于访问Oracle数据库.我发现:
这看起来与我的问题类似,但这个问题更具体:我想将一个ArrayList绑定到要在Oracle中使用的PreparedStatement,如果可能的话,这是如何实现的?
我创建了一个与数据库相关的应用程序。
在此我创建简单的数据库并获取使用从数据库中的值中的SQL查询。
我的问题是我得到了像“2,6,8,9,10”这样的字符串。首先我拆分这个字符串并存储在一个数组列表中。没有逗号。在这个数组列表之后,我用逗号合并,就像一个 2,6,8,9,10 这个。
这一切我都做得很好。我在查询中使用这个字符串从数据库中获取值。我的查询是
SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='3' AND tm.oraganisationid ='1' AND  td.topic_id in(2,6,8,9,10);
这个。
但是当我传递合并字符串时,它看起来像
SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='3' AND tm.oraganisationid ='1' AND  td.topic_id in('2,6,8,9,10');
所以我无法运行查询,因为原因中的传递值不同in  。在上面的查询中工作正常,因为它s like ain(2,6,8,9,10) 
in second it look like ain('2,6,8,9,10') 
so what to do.
how to remove this'` from string?
首先我拆分字符串
//getTopicFile ArrayList with 
    public  ArrayList<String> getAssignTopicArrayList(String passString) 
    { …我必须为Postgres数据库编写一个SQL查询,如下所示:
DELETE FROM employee WHERE ename IN (?)
我想传递ename包含多个员工姓名的列表或字符串,例如"abc, bcd, efg".如何设置值?
如何在Postgres中使用IN子句PreparedStatement?
我有一个数据库,用户可以在其中搜索包含一个或多个项目列表的记录.我正在使用IN进行搜索,但我无法使用IN来处理预准备语句.这就是我尝试过的:
SELECT * FROM tbl1 WHERE col IN (?)
但是准备好的声明将我传递的项目列表视为单个项目.我怎样才能做到这一点?
我正在使用sqlite,如果它有任何区别.
我需要检索与列表中存储的ID匹配的记录.在运行时生成的查询很简单:
SELECT [whatever FROM sometable] WHERE (id = 1) or (id = 5) or (id = 33).
这相当于
SELECT [whatever FROM sometable] WHERE [id] IN (1, 5, 33);
这很好,但如果列表包含数百或数千个ID怎么办?声明将是巨大的,并且在某些时候SQL解析器可能会呱呱叫,或者如果它没有,性能可能会非常糟糕.如何以对检索的记录数量不那么敏感的方式执行此操作?
(我不能只循环遍历列表并逐个检索记录的原因是我需要数据库为我做ORDER BY.记录必须来自特定字段排序的数据库,而列表表示由网格中的用户可以通过多种方式进行排序.是的,我可以在检索后对代码中的记录进行排序,但这是计划B,因为我甚至不需要将它们全部保存在一个数据结构中,只是为了正确订购.)
我正在尝试使用Ecto.Adapters.SQL.query,它工作正常,但不适用于数组。例如,此语句失败:
Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)", 
  [["title1", "title2"]]
错误:
** (ArgumentError) Postgrex expected a binary that can be encoded/cast to
type "text", got ["title1", "title2"]. Please make sure the value you are
passing matches the definition in your table or in your query or convert
the value accordingly.
更新
没有简单的方法可以做到,但这不是 Ecto 的限制,而是SQL 数据库 / PostgreSQL的限制,更多详细信息和解决方法。
很难相信在 2016 年 SQL 数据库仍然缺乏这样一个基本功能......
我有这段代码
 final List<Account> result = this.jdbcTemplate.query(LIST_OF_ACCOUNT_SQL, new String[]{ids},
当我只传递一个参数时
        final String ids= "3213";
代码工作正常。
但是我在将多个参数传递给我的通配符时遇到问题
final String ids= "3213, 2313";
这是我的 SQL
"SELECT ID, NAME FROM ACCOUNT WHERE STATUS = 'OK' AND ID IN (?) ";
我正在使用 Oracle 数据库。