问题标签 [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.
java - 为什么从 Oracle 查询符合 JDBC 的数据库不像馅饼那么容易?
好的,所以它几乎已经像馅饼一样容易了。但它真的应该比它更容易。
我想我应该能够通过将 JDBC 连接字符串放入 TNSNAMES 来连接到另一个数据库。每个数据库供应商都有一个 type-4 JDBC 驱动程序,而且通常有一个很好的免费替代方案。
鉴于 Oracle 是如此热衷于 Java 的粉丝,并且在数据库中内置了 JVM,我原以为基于 JDBC 的链接技术将是不费吹灰之力。在 TNSNAMES 中有一个 JDBC 连接字符串似乎是一个自然的扩展,并且一切都会“正常工作”——你可以对任何东西使用“sql*plus”。
但它不是这样工作的。如果你想连接到另一个非 Oracle 数据库,你必须购买一个叫做 Oracle 网关的东西或者使用 ODBC(通过一个叫做 Generic Connectivity 的东西)。
[原创性警告...这与我以前的问题有关,但有人建议我输入补充评论作为单独的问题。我与谁争辩?]
java - Eclipse 帮助中的 Postgres JDBC 连接
我正在尝试使 postgres jdbc 连接在 Eclipse 中工作。使用 Data Source Explorer 会很好,但现在我只是想建立一个基本的连接。到目前为止我所做的是下载 postgres JDBC 连接器。然后我尝试了两种不同的方法。首先,Preferences-> Data Management,我尝试添加 postgres 连接器。其次,我将 jar 添加到我的项目中并尝试使用 Class.forName("org.postgresql.Driver"); 加载驱动程序;但都没有奏效。有没有人有任何想法?
谢谢,查理
java - 插入行jdbc的主键?
是否有跨数据库平台的方式来获取您刚刚插入的记录的主键?
我注意到这个答案说你可以通过调用来获取它SELECT LAST_INSERT_ID()
,我认为你可以调用SELECT @@IDENTITY AS 'Identity';
是否有一种通用的方法可以在 jdbc 中跨数据库执行此操作?
如果不是,你会如何建议我为一段可以访问 SQL Server、MySQL 和 Oracle 的代码实现这个?
java - 为不同的列名重用 resultMap
有没有办法在单个查询中多次重用相同的 resultMap。
例如,假设我有一个“foo”resultMap:
有没有办法定义另一个将上述内容用于不同列的结果映射?就像是...
java - 无需用户名或密码即可连接到 Oracle
Oracle 有这样一个概念,即允许数据库用户由运行连接到 Oracle 的程序的操作系统用户来识别。见这里。
这使您可以像 unix 机器上的用户那样执行以下命令:
我正在尝试为 Oracle 10.2 编写一个无需用户名或密码即可连接的 Java 程序。url的明显选择:
不起作用,给出一个错误(对不起,我现在没有可用的错误)。
我也尝试了许多其他形式的这样做,但没有运气。
有人对我如何使用操作系统识别方法将 Java 程序连接到 Oracle 有任何建议吗?
java - 以原子方式更新多行
我需要执行一个选择,然后ResultSet
以原子方式更新其中的一些行。
我使用的代码看起来像(简化):
- 我可以保证更新将自动执行吗?如果不是,我怎么能保证呢?
- 如果任何其他进程更改了您正在更新的数据库行,会发生什么
updateRow()
?有什么办法可以锁定中的行ResultSet
吗?
oracle - 将 Oracle 集合与瘦 JDBC 结合使用时的全球化问题
总结一下这个问题:
- 当 DB 编码为 Western ISO 8859-2 时,在 Java 1.5 (JDBC) 中检索字符串可以正常工作
- 当切换到东欧 ISO(例如 ISO 8859-5)时,所有正常的 JDBC 字符串转换都可以工作,除了那些涉及 Oracle 集合的转换,例如对象的嵌套表。我得到的不是正确的字符串,甚至是简单的字符串,例如“1”,而是“???” (三个问号)代替。
我尝试了以下 10.2.0.4 JDBC Jar 文件,但无济于事:
- ojdbc14.jar
- orai18n.jar
我还尝试了 CHAR 和 VARCHAR2 并且两者的行为相同。
java - 来自 Spring-JDBC 的 getResultSet
我正在使用 Spring 对 JDBC 的支持。我想使用JdbcTemplate(或 SimpleJdbcTemplate)来执行查询并获取结果作为 ResultSet 的实例。
我能看到实现这一目标的唯一方法是使用:
这种方法的一个明显缺点是它需要我对 SqlRowSet 的实现类型做出假设(通过强制转换),但是有更好的方法吗?
背景资料...
我想以 ResultSet 而不是 bean 集合的形式获取结果的原因是因为结果将直接传递给 Jasper 报告以进行显示。换句话说,Java bean 将只用于临时存储 ResultSet 中的每一行,如果可能的话,我想避免为每个 Jasper 报告创建这样的 bean。
干杯,唐
java - 使用 Java 中的 sqlite 获取最后插入的 id 的最佳方法是什么?
使用 Java 中的 sqlite 获取最后插入的 id 的最佳方法是什么?谷歌给了我不同的答案——有人说选择last-insert-rowid;其他人说调用 statement.getGeneratedKeys()。最好的路线是什么?(我只想返回 id,而不是将其用于其他插入或任何东西。)
java - 在 Java 中记录 PreparedStatements
一直很痛苦的一件事是当您拥有 PreparedStatement 而不是查询本身时记录 SQL (JDBC) 错误。
您总是会收到以下消息:
当然,我可以编写一个辅助方法来检索值并用实际值解析/替换问号(如果我没有得到这个问题的结果,可能会走这条路),但我只是想知道是否这个问题之前已经被其他人解决了,和/或是否有任何通用的日志记录助手可以自动为我解决这个问题。
在几个答案后编辑:
到目前为止提供的库似乎适合记录调试语句,这无疑是有用的。但是,我正在寻找一种方法来获取 PreparedStatement 本身(不是某个子类)并在发生错误时记录其 SQL 语句。我不想使用 PreparedStatement 的替代实现来部署生产应用程序。
我想我正在寻找实用程序类,而不是 PreparedStatement 专业化。
谢谢!