我想从行插入检索自动生成的id,但我得到一个NullPointerException 这里是代码: long result = 0; final String SQL = "INSERT INTO compte (prenom, nom, datenaissance, numtelephone) " + " VALUES(?,?,?,?)"; KeyHolder keyHolder = new GeneratedKeyHolder(); int row= this.jdbcTemplate.update(new PreparedStatementCreator(){ public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps =connection.prepareStatement(SQL); ps.setString(1, a.getSurname()); ps.setString(2, a.getName()); ps.setDate(3, a.getDob()); ps.setString(4, a.getPhone()); return ps; } },keyHolder); if (row > […]
我有一个JDBC的问题。 我有以下代码: //blargeparam is a blob column. PreparedStatement pst =connection.prepareStatement("update gcp_processparams_log set blargeparam= ? where idprocessparamslog=1"); pst.setBinaryStream(1,inputStream); 我得到以下错误: Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T2CPreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 我的连接string是jdbc:oracle:oci:@….. Oracle版本是11g。 从错误消息,似乎有什么东西是失踪,但: 当我从同一个BLOB列(使用blob.getBytes)读取一切正常。 即时客户端的DLL(正确)在库path中。 这是我的类path中的Oracle JDBC JAR的清单: Manifest-Version: 1.0 Specification-Title: Oracle JDBC driver classes for use with JDK14 Sealed: true Created-By: 1.4.2_14 (Sun Microsystems Inc.) Implementation-Title: ojdbc14.jar Specification-Vendor: Oracle Corporation […]
出于某种原因,我的制作数据库决定发布此消息。 所有应用程序调用失败的数据库与错误: PreparedStatementCallback; SQL [ /*long sql statement here*/ ]; Can't create/write to file '/tmp/#sql_3c6_0.MYI' (Errcode: 2); nested exception is java.sql.SQLException: Can't create/write to file '/tmp/#sql_3c6_0.MYI' (Errcode: 2) 我不知道,这甚至意味着什么。 在/tmp没有#sql_3c6_0.MYI文件,出于某种原因我不能创build一个带有#字符的文件。 有没有人听说过或看到这个错误? 有什么可能是错的,有些可能的事情要看? MySQL数据库似乎已经启动并可以通过控制台查询,但应用程序似乎无法完成。 应用程序代码/文件没有变化。 它发生在蓝色。 所以我甚至不知道从哪里开始看,或者采用什么样的分辨策略。 有任何想法吗?
由于ResultSet包含从dynamicSQL返回的数据,如果有任何方法来确定ResultSet是否包含特定的列名称? 例如,如果我运行rs.getString("Column_ABC"); 但Column_ABC并不存在,它会抛出exception。 如何testingResultSet是否可以从名为“Column_ABC”的列中获取数据?
我有一个处理数据库(PostgreSQL)的所有行的问题。 我得到一个错误: org.postgresql.util.PSQLException: Ran out of memory retrieving query results. 我认为我需要读小块的所有行,但它不工作 – 它只读取100行(下面的代码)。 怎么做? int i = 0; Statement s = connection.createStatement(); s.setMaxRows(100); // bacause of: org.postgresql.util.PSQLException: Ran out of memory retrieving query results. ResultSet rs = s.executeQuery("select * from " + tabName); for (;;) { while (rs.next()) { i++; // do something… } if […]
Spring-Boot是一个非常棒的工具,但是对于更高级的configuration,文档有点稀疏。 我如何设置像我的数据库连接池的最大大小的属性? Spring-Boot本身就支持tomcat-jdbc , HikariCP和Commons DBCP ,它们都是以同样的方式configuration的吗?
将java.sql.Date对象转换为java.util.Date,同时保留时间戳的最简单方法是什么? 我试过了: java.util.Date newDate = new Date(result.getDate("VALUEDATE").getTime()); 没有运气。 它仍然只将date部分存储到variables中。
在使用JDBC的时候,我经常碰到类似的构造 ResultSet rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt(1); // Some other actions } 我问自己(还有代码的作者)为什么不使用标签来检索列值: int id = rs.getInt("CUSTOMER_ID"); 我听到的最好的解释是有关性能。 但实际上,它是否使处理速度非常快? 我不这么认为,尽pipe我从来没有做过测量。 即使通过标签检索会慢一点,但是,在我看来,它提供了更好的可读性和灵活性。 那么有人可以给我一个很好的解释,避免检索列索引,而不是列标签? 这两种方法的优点和缺点是什么(也许,关于某些DBMS)?
是否有可能从SQL插入的Spring jdbc模板调用中获取@@ identity? 如果是这样,怎么样?
我意识到,由于UNIX套接字是特定于平台的,因此必须包含一些非Java代码。 具体而言,我们有兴趣使用JDBC连接到仅启用了UNIX域套接字的MySQL实例。 它看起来并不支持,但是从我读过的内容来看, 如果我们能够find适用于Java的UNIX套接字体面实现,至less应该可以为基于UNIX套接字的JDBC编写SocketFactory。 有没有人试过这个? 有谁知道这样的实现?