问题标签 [apache-commons-dbutils]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
612 浏览

java - 带有特殊字符的 Java SQL 表名

我有一个代码,它可以即时创建表格。这些表用于存储和获取不同进程的数据。

问题:表名是用“&”等特殊字符创建的。MySQL 允许使用特殊字符的表名。不是 MySQL 的问题。

当我使用 DBUtils 从此类表中查询数据时,我在特殊字符处出现异常。如果我使用的是普通的 jdbc,那么我可以逃脱那些并且可以处理数据。但是 DButils 不允许转义这些字符。

我尝试在表名中添加双引号并尝试处理,但问题仍然存在。有什么建议吗??

删除所有列名和详细表名。表名是“NRI-AO_I” 代码将数据添加到数百个表中,但很少有失败。这些表名在表名中有特殊字符。名称中带有“&”或“-”的表会失败。

0 投票
1 回答
312 浏览

sql-server - DBUtils能否克服SQLServer:“必须先执行语句才能获得任何结果。”

我正在尝试将数据插入到具有生成密钥的 SqlServer 表中。我不关心创建的新密钥,但我回来的错误似乎表明我必须:

DBUtils 有一个(谢天谢地)简单的界面,但似乎无法克服这一点。

有人有想法么?

0 投票
0 回答
959 浏览

java - queryRunner insert 添加参数

我正在尝试进行插入并返回自动生成的 id。这是一个 Oracle 数据库。为此,我正在使用 org.apache.commons.dbutils.QueryRunner insert 它返回第一列。

问题是我不知道出于什么原因我在查询中添加了一个参数,它不会让它工作。

我有这个代码:

和我的GenericlSQLRepository

当我尝试运行它时,我得到了这个错误

“java.sql.SQLException:错误数量的参数:预期 3,给出了 2 查询:INSERT INTO concept_to_bonus(ID,CONCEPT_ID,CONCEPT_TYPE)VALUES(SEQ_CONCEPT_TO_BONUS_ID.NEXTVAL,?,?)参数:[1731472066,ORDER]”

我真的不明白为什么要在参数计数中添加一个参数。当我通过简单的执行运行此插入时,它工作得很好

0 投票
0 回答
435 浏览

java - JDBC 连接突然开始检查严格类型并抛出 java.sql.SQLException 类型不兼容

COUNT(*)从 Java执行一个简单的存储过程时,我遇到了间歇性问题。我正在使用不兼容的类型低于 java.sql.SQLException。请参阅示例存储过程,除了COUNT(*).

奇怪的是,以下异常并非一直发生,而是仅在一段时间后发生。请注意,COUNT在下面的过程中,总是会返回非常小的值,例如 40 或 50。它实际上从来没有变成 3 位数字,所以它应该可以作为整数。

我无法理解的是,如果它是实际的数据类型不匹配,而不是为什么它有时会工作并且突然停止工作而数据库上没有发生任何数据更新。

所以现在一切正常,几分钟或几个请求后突然一切停止工作。这是非常随机的,它突然开始抛出错误,而数据库中的数据没有任何变化。如果我重新启动服务器或重新部署相同的代码而不更改数据库中的任何代码或数据,它将再次开始工作。它正在嵌入式 tomcat 环境中部署它。

请检查下面的 JDBC 连接代码以及我在连接数据库时所做的配置。另请注意,保存该计数列值的变量此时定义为 Integer 而不是 Long。我可能可以通过在这里简单地更改变量类型来解决这个问题,但不确定我是否想改变它而不理解为什么有时它会正常工作并突然开始中断。

有许多数据点会引发类似类型的类型故障错误,因此将其更改为所有数据点可能很困难。顺便说一句,如果我重新启动服务器或重新部署相同的代码而不更改数据库中的任何代码或数据,它就会再次开始工作。

请在下面找到它有时但并非总是抛出的异常。

请注意,我们在这里使用 apache dbutil commons 库连接到 DB。

我将计数值定义为 int 的 Dto 类如下。

请在下面找到我们设置的 JDBC 连接池属性。

请在下面找到简单的存储过程代码。

0 投票
0 回答
321 浏览

java - Android - Apache Commons DbUtils - QueryRunner 异常

我在我的应用程序中使用 Apache Commons DbUtils ( https://commons.apache.org/proper/commons-dbutils/ )。

我将 jar 文件 ( commons-dbutils-1.7.jar) 添加到 libs 文件夹中。然后我有这个代码:

在最后一行我得到了这个异常:

怎么了?我应该怎么办?导入其他库?

谢谢你的帮助!

0 投票
1 回答
1241 浏览

scala - Azure Databricks Notebook 在包中时无法找到“dbutils”

我正在创建一个用于与 azure 存储 blob 通信的类,它工作正常,但是如果我尝试将这个类放入包中,它会给我一个错误"error: not found: value dbutils"。如果我删除班级上方的“package Libraries.Custom” ,它工作正常。

我正在使用 Scala 在 azure databricks notebook 中创建一个类。谁能帮帮我。代码如下:

班级代码

错误

0 投票
1 回答
768 浏览

java - Need to stream large QueryRunner result to file, seems to be storing in memory

I'm trying to build a Java application that can stream very large result sets of arbitrary SQL SELECT queries into JSONL files, specifically through SQLServer but would like to run with any JDBC DataSource. In Python this would be easy to just treat the sql client result as a generator and then call json.dumps(). However, in this code it seems like its putting everything in memory before writing out, typically causing heap and garbage collection exceptions. The queries I need this to run for are very large, bringing back up to 10GB of raw data. Execution time is not the primary concern, as long as it works every time.

I've tried calling flush after ever row (which is ridiculous) and that seems to help with small datasets but not with large ones. Can anyone suggest a strategy I can use to pull this off easily?

In my SQL client class I use Apache DbUtils QueryRunner and MapListHandler to create a list of Maps which is the flexibility I need (versus more traditional approaches in Java which require specifying schema and types):

JsonLOutputWriter class:

Main method:

0 投票
0 回答
258 浏览

java - 为什么 BeanListHandler 不在我的课堂上工作?

前几天我发现了 DbUtils,所以我加入了一个项目来测试它。我创建了一个名为 Tag 的类,看起来像这样。

我的数据库中有一个名为 TAGS 的表,我想做的就是创建一个获取所有这些 TAGS 的函数。这是我写的函数:

问题是 BeanListHandler 没有正确地将结果集条目映射到我的对象中。这就是我得到的:

任何帮助将不胜感激!谢谢!

0 投票
1 回答
585 浏览

java - Apache JDBC Utilts 与 SpringJDBC 模板。哪个更好?

我在争论自己是否在我的项目中使用 jdbcTemplate 和 apache DBUtils。我的应用程序是一个 spring 应用程序,我们在其中使用 jdbcTemplate 来处理一些请求。但我正在考虑这个非常轻量级且易于理解的 Apache DbUtils。

我知道 jdbcTemplate 和 dbutils 都是常规 JDBC 之上的抽象层,这有助于我们避免肉鸡板代码。

所以我的问题是:

1)我应该说服自己将所有东西从 jdbcTemplate 迁移到 dbutils 有什么充分的理由吗?

2)jdbcTemplate 中的任何自动 POJO 映射器都自动映射到 java POJO 类?在 DbUtils 中,我知道我们可以像下面这样:

ResultSetHandler<List<Object>> beanListHandler = new BeanListHandler<Object>(Object.class, new BasicRowProcessor(new GenerousBeanProcessor()));

在 jdbcTemplate 中,我知道我们可以有一个自定义的 rowMapper,我们可以在其中显式设置如下属性,但是有没有办法像在 dbutils 中那样自动映射到 POJOS?

3)性能方面,使用 dbutils 会有什么不同吗?(因为我们已经在其他请求中使用了 jdbcTemplate)

任何人都可以建议从这两个中选择最好的,为什么根据您的经验?

0 投票
1 回答
101 浏览

java - 对象序列化期间的 DbUtils 类型转换问题

我正在使用 DbUtils 来处理 PostgreSQL 和 MySQL 之间的互换性。我有点期望这是一个问题,但希望有一种干净的方法来处理类型转换。我正在使用 Flyway 进行迁移,因此我必须尽可能标准地编写我的架构,以支持它支持的所有不同类型的关系数据库,其中 PostgreSQL 和 MySQL 是主要关注点(目前)。

这是我正在使用的基本架构:

POJO 类如下所示:

我在两个领域苦苦挣扎:idapikey_enabled. 我指定idSERIAL因为 PostgreSQL 不支持AUTO_INCREMENT指令。但是,SERIAL这意味着UNSIGNED INT在 PostgreSQL 和UNSIGNED BIGINTMySQL 中,会导致 DbUtils 中的转换失败BeanHandler。此外,apikey_enabled在 PostgreSQL 中失败,但在 MySQL 中没有。它在 MySQL 中将其视为布尔值,而 PostgreSQL 正在尝试转换为 int。

我在这里不知所措。尝试标准化架构时的最佳实践是什么?我是否应该避免 DbUtils 对象映射并坚持手动设置这些值的更繁琐但更可控的方法?