问题标签 [jdbc]

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 投票
4 回答
685 浏览

java - 为什么从 Oracle 查询符合 JDBC 的数据库不像馅饼那么容易?

好的,所以它几乎已经像馅饼一样容易了。但它真的应该比它更容易。

我想我应该能够通过将 JDBC 连接字符串放入 TNSNAMES 来连接到另一个数据库。每个数据库供应商都有一个 type-4 JDBC 驱动程序,而且通常有一个很好的免费替代方案。

鉴于 Oracle 是如此热衷于 Java 的粉丝,并且在数据库中内置了 JVM,我原以为基于 JDBC 的链接技术将是不费吹灰之力。在 TNSNAMES 中有一个 JDBC 连接字符串似乎是一个自然的扩展,并且一切都会“正常工作”——你可以对任何东西使用“sql*plus”。

但它不是这样工作的。如果你想连接到另一个非 Oracle 数据库,你必须购买一个叫做 Oracle 网关的东西或者使用 ODBC(通过一个叫做 Generic Connectivity 的东西)。

[原创性警告...这与我以前的问题有关,但有人建议我输入补充评论作为单独的问题。我与谁争辩?]

0 投票
5 回答
42600 浏览

java - Eclipse 帮助中的 Postgres JDBC 连接

我正在尝试使 postgres jdbc 连接在 Eclipse 中工作。使用 Data Source Explorer 会很好,但现在我只是想建立一个基本的连接。到目前为止我所做的是下载 postgres JDBC 连接器。然后我尝试了两种不同的方法。首先,Preferences-> Data Management,我尝试添加 postgres 连接器。其次,我将 jar 添加到我的项目中并尝试使用 Class.forName("org.postgresql.Driver"); 加载驱动程序;但都没有奏效。有没有人有任何想法?

谢谢,查理

0 投票
7 回答
45116 浏览

java - 插入行jdbc的主键?

是否有跨数据库平台的方式来获取您刚刚插入的记录的主键?

我注意到这个答案说你可以通过调用来获取它SELECT LAST_INSERT_ID(),我认为你可以调用SELECT @@IDENTITY AS 'Identity';是否有一种通用的方法可以在 jdbc 中跨数据库执行此操作?

如果不是,你会如何建议我为一段可以访问 SQL Server、MySQL 和 Oracle 的代码实现这个?

0 投票
2 回答
4001 浏览

java - 为不同的列名重用 resultMap

有没有办法在单个查询中多次重用相同的 resultMap。

例如,假设我有一个“foo”resultMap:

有没有办法定义另一个将上述内容用于不同列的结果映射?就像是...

0 投票
8 回答
11758 浏览

java - 无需用户名或密码即可连接到 Oracle

Oracle 有这样一个概念,即允许数据库用户由运行连接到 Oracle 的程序的操作系统用户来识别。见这里

这使您可以像 unix 机器上的用户那样执行以下命令:

我正在尝试为 Oracle 10.2 编写一个无需用户名或密码即可连接的 Java 程序。url的明显选择:

不起作用,给出一个错误(对不起,我现在没有可用的错误)。

我也尝试了许多其他形式的这样做,但没有运气。

有人对我如何使用操作系统识别方法将 Java 程序连接到 Oracle 有任何建议吗?

0 投票
3 回答
1205 浏览

java - 以原子方式更新多行

我需要执行一个选择,然后ResultSet以原子方式更新其中的一些行。

我使用的代码看起来像(简化):

  • 我可以保证更新将自动执行吗?如果不是,我怎么能保证呢?
  • 如果任何其他进程更改了您正在更新的数据库行,会发生什么updateRow()?有什么办法可以锁定中的行ResultSet吗?
0 投票
1 回答
512 浏览

oracle - 将 Oracle 集合与瘦 JDBC 结合使用时的全球化问题

总结一下这个问题:

  1. 当 DB 编码为 Western ISO 8859-2 时,在 Java 1.5 (JDBC) 中检索字符串可以正常工作
  2. 当切换到东欧 ISO(例如 ISO 8859-5)时,所有正常的 JDBC 字符串转换都可以工作,除了那些涉及 Oracle 集合的转换,例如对象的嵌套表。我得到的不是正确的字符串,甚至是简单的字符串,例如“1”,而是“???” (三个问号)代替。

我尝试了以下 10.2.0.4 JDBC Jar 文件,但无济于事:

  • ojdbc14.jar
  • orai18n.jar

我还尝试了 CHAR 和 VARCHAR2 并且两者的行为相同。

0 投票
2 回答
13289 浏览

java - 来自 Spring-JDBC 的 getResultSet

我正在使用 Spring 对 JDBC 的支持。我想使用JdbcTemplate(或 SimpleJdbcTemplate)来执行查询并获取结果作为 ResultSet 的实例。

我能看到实现这一目标的唯一方法是使用:

这种方法的一个明显缺点是它需要我对 SqlRowSet 的实现类型做出假设(通过强制转换),但是有更好的方法吗?

背景资料...

我想以 ResultSet 而不是 bean 集合的形式获取结果的原因是因为结果将直接传递给 Jasper 报告以进行显示。换句话说,Java bean 将只用于临时存储 ResultSet 中的每一行,如果可能的话,我想避免为每个 Jasper 报告创建这样的 bean。

干杯,唐

0 投票
2 回答
22809 浏览

java - 使用 Java 中的 sqlite 获取最后插入的 id 的最佳方法是什么?

使用 Java 中的 sqlite 获取最后插入的 id 的最佳方法是什么?谷歌给了我不同的答案——有人说选择last-insert-rowid;其他人说调用 statement.getGeneratedKeys()。最好的路线是什么?(我只想返回 id,而不是将其用于其他插入或任何东西。)

0 投票
4 回答
17813 浏览

java - 在 Java 中记录 PreparedStatements

一直很痛苦的一件事是当您拥有 PreparedStatement 而不是查询本身时记录 SQL (JDBC) 错误。

您总是会收到以下消息:

当然,我可以编写一个辅助方法来检索值并用实际值解析/替换问号(如果我没有得到这个问题的结果,可能会走这条路),但我只是想知道是否这个问题之前已经被其他人解决了,和/或是否有任何通用的日志记录助手可以自动为我解决这个问题。

在几个答案后编辑:

到目前为止提供的库似乎适合记录调试语句,这无疑是有用的。但是,我正在寻找一种方法来获取 PreparedStatement 本身(不是某个子类)并在发生错误时记录其 SQL 语句。我不想使用 PreparedStatement 的替代实现来部署生产应用程序。

我想我正在寻找实用程序类,而不是 PreparedStatement 专业化。

谢谢!