相关疑难解决方法(0)

如何将ArrayList绑定到Oracle中的PreparedStatement?

我想知道是否有办法将ArrayList(或任何类型的List)绑定到PreparedStatement,最终将用于访问Oracle数据库.我发现:

PreparedStatement IN子句替代?

这看起来与我的问题类似,但这个问题更具体:我想将一个ArrayList绑定到要在Oracle中使用的PreparedStatement,如果可能的话,这是如何实现的?

java oracle jdbc arraylist prepared-statement

5
推荐指数
1
解决办法
2万
查看次数

如何在sql查询中传递逗号分隔的字符串值?

我创建了一个与数据库相关的应用程序。

在此我创建简单的数据库并获取使用从数据库中的值的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);
Run Code Online (Sandbox Code Playgroud)

这个。

但是当我传递合并字符串时,它看起来像

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');
Run Code Online (Sandbox Code Playgroud)

所以我无法运行查询,因为原因中的传递值不同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) 
    { …
Run Code Online (Sandbox Code Playgroud)

sqlite string android

5
推荐指数
1
解决办法
2237
查看次数

如何在PostgreSQL中使用带有PreparedStatement的IN子句

我必须为Postgres数据库编写一个SQL查询,如下所示:

DELETE FROM employee WHERE ename IN (?)
Run Code Online (Sandbox Code Playgroud)

我想传递ename包含多个员工姓名的列表或字符串,例如"abc, bcd, efg".如何设置值?

如何在Postgres中使用IN子句PreparedStatement

sql postgresql jdbc prepared-statement

5
推荐指数
3
解决办法
5546
查看次数

准备好的语句和IN表达式

我有一个数据库,用户可以在其中搜索包含一个或多个项目列表的记录.我正在使用IN进行搜索,但我无法使用IN来处理预准备语句.这就是我尝试过的:

SELECT * FROM tbl1 WHERE col IN (?)
Run Code Online (Sandbox Code Playgroud)

但是准备好的声明将我传递的项目列表视为单个项目.我怎样才能做到这一点?

我正在使用sqlite,如果它有任何区别.

sqlite prepared-statement

4
推荐指数
1
解决办法
1440
查看次数

在SQLite WHERE子句中组合了大量条件

我需要检索与列表中存储的ID匹配的记录.在运行时生成的查询很简单:

SELECT [whatever FROM sometable] WHERE (id = 1) or (id = 5) or (id = 33).
Run Code Online (Sandbox Code Playgroud)

这相当于

SELECT [whatever FROM sometable] WHERE [id] IN (1, 5, 33);
Run Code Online (Sandbox Code Playgroud)

这很好,但如果列表包含数百或数千个ID怎么办?声明将是巨大的,并且在某些时候SQL解析器可能会呱呱叫,或者如果它没有,性能可能会非常糟糕.如何以对检索的记录数量不那么敏感的方式执行此操作?

(我不能只循环遍历列表并逐个检索记录的原因是我需要数据库为我做ORDER BY.记录必须来自特定字段排序的数据库,而列表表示由网格中的用户可以通过多种方式进行排序.是的,我可以在检索后对代码中的记录进行排序,但这是计划B,因为我甚至不需要将它们全部保存在一个数据结构中,只是为了正确订购.)

sql sqlite performance

2
推荐指数
1
解决办法
1977
查看次数

如何将 Ecto.Adapters.SQL.query 与数组一起使用?

我正在尝试使用Ecto.Adapters.SQL.query,它工作正常,但不适用于数组。例如,此语句失败:

Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)", 
  [["title1", "title2"]]
Run Code Online (Sandbox Code Playgroud)

错误:

** (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.
Run Code Online (Sandbox Code Playgroud)

更新

没有简单的方法可以做到,但这不是 Ecto 的限制,而是SQL 数据库 / PostgreSQL限制更多详细信息和解决方法

很难相信在 2016 年 SQL 数据库仍然缺乏这样一个基本功能......

sql elixir ecto

1
推荐指数
1
解决办法
1279
查看次数

不能将多个参数传递给 SQL 语句到通配符中

我有这段代码

 final List<Account> result = this.jdbcTemplate.query(LIST_OF_ACCOUNT_SQL, new String[]{ids},
Run Code Online (Sandbox Code Playgroud)

当我只传递一个参数时

        final String ids= "3213";
Run Code Online (Sandbox Code Playgroud)

代码工作正常。

但是我在将多个参数传递给我的通配符时遇到问题

final String ids= "3213, 2313";
Run Code Online (Sandbox Code Playgroud)

这是我的 SQL

"SELECT ID, NAME FROM ACCOUNT WHERE STATUS = 'OK' AND ID IN (?) ";
Run Code Online (Sandbox Code Playgroud)

我正在使用 Oracle 数据库。

java sql

0
推荐指数
1
解决办法
66
查看次数