Tag: jdbc

如何在jdbctemplate中查询列表

我正在使用spring jdbctemplate并运行如下查询: SELECT COLNAME FROM TABLEA GROUP BY COLNAME 没有传递任何命名参数,但是,用户将传递列名COLNAME 。 问题 有没有办法让占位符,比如? 列名? 例如SELECT ? FROM TABLEA GROUP BY ? SELECT ? FROM TABLEA GROUP BY ? 如果我想简单地运行上面的查询并获得List ,最好的方法是什么? 目前我在做: List <Map> data = getJdbcTemplate().queryForList(query); for (Map m : data) System.out.println(m.get(“COLNAME”));

如何在Java中打印Statement(CallableStatement)?

如何打印此OracleCallableStatement? ocstmt = (OracleCallableStatement) connection.prepareCall(“{?= call package.method(id => ?, name=>?)}”); ocstmt.registerOutParameter(1, OracleTypes.CURSOR); ocstmt.setInt(2, obj.getId()); ocstmt.setString(3, obj.getName()); ocstmt.execute(); resultSet = ocstmt.getCursor(1); 我的意思是我怎么知道什么查询进入数据库,我该如何打印查询? 因为有时它会给我一些错误,比如“错误的类型”,这就是为什么我要查看这个查询

如何确定获得的Java ResultSet是否为空?

Class.forName(“org.sqlite.JDBC”); Connection conn = DriverManager.getConnection(“jdbc:sqlite:userdata.db”); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(“SELECT * from table WHERE is_query_processed = 0;”); int rowcount = rs.getRow(); System.out.println(“Row count = “+rowcount); // output 1 rs.first(); // This statement generates an exception 为什么会这样?

ResultSetImpl.checkColumnBounds或ResultSetImpl.getStringInternal中偶尔出现NullPointerException

首先,请不要将它作为NullPointerException副本以及如何修复它来关闭它。 我知道什么是NullPointerException ,我知道如何在我自己的代码中解决它,但不是当它被mysql-connector-java-5.1.36-bin.jar抛出时,我无法控制它。 我们在mySQL数据库上运行公共数据库查询时遇到exception,该查询在大多数情况下都有效。 我们在部署新版本后开始看到此exception,但发生这种exception的查询在很长一段时间内都没有发生变化。 以下是查询的外观(通过一些必要的简化)。 我用之前和之后执行的一些逻辑包围了它。 实际的代码不是全部都在一个方法中,但我把它放在一个块中,以便更容易理解。 Connection conn = … // the connection is open … for (String someID : someIDs) { SomeClass sc = null; PreparedStatement stmt = conn.prepareStatement (“SELECT A, B, C, D, E, F, G, H FROM T WHERE A = ?”); stmt.setString (1, “someID”); ResultSet res = stmt.executeQuery (); […]

ms sql microsoft的jdbc驱动程序和jTDS的驱动程序之间的差异

每个司机之间有什么区别? 我的意思是,除了其中一个是开源的 每个人的利弊是什么? 你会推荐哪一个? 这里是jTDS自己对这个主题的看法: http ://jtds.sourceforge.net/

从MySql迁移:MariaDB服务器意外关闭客户端连接

由于许可/商业使用原因,我们正在从MySql迁移到MariaDB。 我们已经成功地用MariaDB客户端jar替换了MySql连接器jar(第一次更改),现在尝试用MariaDB服务器替换MySql服务器而不更改数据文件。 我们所有的应用程序都运行良好约8-12小时,之后我们看到以下exception: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:494) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:315) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:257) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209) at $Proxy4.getMessageCountByStatus(Unknown Source) […]

我应该使用JDBC getNString()而不是getString()吗?

我们正在构建一个由我们使用JDBC访问的Oracle数据库支持的Java应用程序(驱动程序ojdbc6.jar和orai18n.jar )。 数据库模式主要使用NVARCHAR2数据类型存储文本列。 JDBC ResultSet的JDBC文档说getNString()特别适用于NCHAR,NVARCHAR等数据类型,但目前我们只使用getString() 。 这似乎工作正常,所以我想知道为什么我应该使用getNString()而不是getString() 。 如果输入非ASCII字符, getString()会开始失败,或者Oracle JDBC驱动程序对于我应该使用哪种方法无动于衷? 编辑:似乎它可能依赖于数据库: SQL Server似乎不介意您使用哪个 ,具体取决于连接参数。 有没有人有关于Oracle的任何具体信息?

如何从结果集中获取Double而不是double?

使用JDBC结果集时,我希望得到Double而不是double,因为此列可以为空。 当列为空时,Rs.getDouble返回0.0。

Java语句对象重用?

我想知道我们是否可以重用相同的Statement对象来执行多个查询。 或者,我们应该为不同的查询创建一个新的语句。 例如, Connection con = getDBConnection(); Statement st1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); int i = st1.executeUpdate(“update tbl_domu set domU_status=1 where domU_id=” + dom_U_id); Statement st2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); String date = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).format(Calendar.getInstance().getTime()); int j = st2.executeUpdate(“insert into tbl_domU_action_history values(‘” + dom_U_name + “‘, 1, ‘” + date + “‘)”); 在上面的例子中,对于executeUpdate()查询使用相同的语句st1是否有任何损害? 我可以为另一个executeQuery()使用相同的Statement对象st1吗?

针对PGPool II的Java查询导致“未命名的预准备语句不存在”错误

我有一个使用Postgres数据库的Java应用程序,我正在尝试引入PGPool以扩展我的数据库。 我遇到了Postgres抛出以下错误的问题: unnamed prepared statement does not exist 。 在启动Postgres上的日志记录后,我看到我的应用程序执行的每个select语句都发生了以下事情: EDTLOG: 00000: duration: 7.585 ms parse : “my select statement here” EDTLOG: 00000: duration: 0.088 ms bind : “my select statement here” EDTLOG: 00000: duration: 79.014 ms execute : “my select statement here” 但有时候,在解析/绑定/执行步骤之间PGPool会执行一些额外的查询,所以日志看起来像这样: EDTLOG: 00000: duration: 7.585 ms parse : “my select statement here” […]