Tag: jdbc

是否启动谓词下推使用JDBC?

据此 Catalyst使用逻辑优化(如谓词下推)。 优化器可以将筛选谓词向下推送到数据源中,使物理执行跳过不相关的数据。 Spark支持将谓词按下到数据源。 此function是否也可用于JDBC? (从检查数据库日志,我可以看到它不是现在的默认行为 – 完整的查询被传递给数据库,即使它后来被火花filter限制) 更多细节 使用PostgreSQL 9.4运行Spark 1.5 代码片段: from pyspark import SQLContext, SparkContext, Row, SparkConf from data_access.data_access_db import REMOTE_CONNECTION sc = SparkContext() sqlContext = SQLContext(sc) url = 'jdbc:postgresql://{host}/{database}?user={user}&password={password}'.format(**REMOTE_CONNECTION) sql = "dummy" df = sqlContext.read.jdbc(url=url, table=sql) df = df.limit(1) df.show() SQL跟踪: < 2015-09-15 07:11:37.718 EDT >LOG: execute <unnamed>: SET extra_float_digits = […]

java.sql.SQLException:用尽的结果集

我得到错误java.sql.SQLException:Exhausted ResultSet对Oracle数据库运行查询。 连接通过Websphere中定义的连接池。 执行的代码如下所示: if (rs! = null) ( while (rs.next ()) ( count = rs.getInt (1); ) ) 我注意到结果集包含数据(rs.next()) 谢谢

为什么autoReconnect = true似乎不起作用?

我正在使用JDBC连接到MySQL服务器(我认为没有连接池)。 在连接URL中,我有autoReconnect=true 但我的联系仍然超时。 我甚至检查了conn.isClosed()和它的错误。 但是当我尝试使用连接时,我得到以下exception。 com.mysql.jdbc.CommunicationsException:通信链路因基础exception而失败: **开始exception** java.net.SocketExceptionexception 消息:软件导致连接中止:套接字写入错误 堆栈跟踪: java.net.SocketException:软件导致连接中止:套接字写入错误 … 我知道在Java 1.6中可以使用conn.isValid(0)来检查连接,但是我使用的是Java 1.5 有没有办法确保它不超时? 或者我将不得不升级到Java 1.6?

何时closuresJDBC中的Connection,Statement,PreparedStatement和ResultSet

关于JDBC编码的几个问题: 对于单个客户端应用程序,我们是否需要连接池? 在开始时创build一个Connection并保持活动状态而不closures它是一个好主意,直​​到应用程序退出? 为什么? PreparedStatement与Connection关联,如果在每个查询之后我的连接没有closures,为什么不保持PreparedStatement的存在并在其他方法中重用呢? 如果我们创buildPreparedStatement每个查询,数据库知道它是相同的PreparedStaement并在第一次后忽略不必要的操作? PreparedStatement是不是一次创build和重用多次声明? 如果是,为什么每次都需要closures它? 我知道调用close()会释放资源。 但是如果我们知道我们稍后会使用它,为什么要释放它,然后再请求它呢? 多客户端应用程序如何? 我们需要连接池,所以我们需要每次创build和closures连接,语句和PreparedStatement? 谢谢,

JDBC分页

我想用JDBC来实现分页。 我想知道的实际情况是:“我怎样才能得到第一个50,然后分别从第一页和第二页的数据库获得50条logging” 我的查询是Select * from data [数据表包含20,000行] 对于页面#1我得到50条logging和页面#2我想获得下50个logging。 我怎样才能有效地在JDBC中实现它? 我已经search并发现, rs.absolute(row)是跳过第一页logging的方式,但是在大型结果集上需要一定的时间,我不想承受这个时间。 另外,我不想在查询中使用rownum和limit + offset ,因为这些查询不好用,我不知道为什么,我不想在查询中使用它。 任何人都可以帮助我如何得到有限的ResultSet的分页,或者有什么办法JDBC给我们?

PreparedStatement与Statement.RETURN_GENERATED_KEYS

某些JDBC驱动程序返回Statement.RETURN_GENERATED_KEYS的唯一方法是执行以下操作: long key = -1L; Statement statement = connection.createStatement(); statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS); ResultSet rs = statement.getGeneratedKeys(); if (rs != null && rs.next()) { key = rs.getLong(1); } 有没有办法与PreparedStatement ? 编辑 我问我是否可以用PreparedStatement做同样的事情的原因考虑以下情况: private static final String SQL_CREATE = "INSERT INTO USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB) VALUES (?, ?, ?, ?, ?)"; 在USER表中有一个PRIMARY KEY (USER_ID) ,它是一个BIGINT AUTOINCREMENT (因此你为什么不在SQL_CREATEstring中看到它。 […]

Hibernate批量大小混乱

这个程序依次进行数以万计的连续插入。 我从来没有用过Hibernate。 我得到了非常慢的性能(如果我只是手动连接和执行SQL,速度要快10-12倍,而且我的batch_size被设置为50,就像许多hibernate教程一样。 这里是一个单一的插入日志 – 也许你可以帮助我明白到底发生了什么: START INSERT 11:02:56.121 [main] DEBUG org.hibernate.impl.SessionImpl – opened session at timestamp: 13106053761 11:02:56.121 [main] DEBUG ohtransaction.JDBCTransaction – begin 11:02:56.121 [main] DEBUG org.hibernate.jdbc.ConnectionManager – opening JDBC connection 11:02:56.121 [main] TRACE ohcDriverManagerConnectionProvider – total checked-out connections: 0 11:02:56.121 [main] TRACE ohcDriverManagerConnectionProvider – using pooled JDBC connection, pool size: 0 11:02:56.121 [main] […]

PLSQL JDBC:如何获取最后一行ID?

什么是PLSQL(甲骨文)相当于这个SQL服务器片段? BEGIN TRAN INSERT INTO mytable(content) VALUES ("test") — assume there's an ID column that is autoincrement SELECT @@IDENTITY COMMIT TRAN 在C#中,您可以调用myCommand.ExecuteScalar()来检索新行的ID。 我怎样才能在Oracle中插入一个新的行,并让JDBC获得一个新的ID的副本? 编辑: BalusC提供了一个非常好的起点。 出于某种原因,JDBC不喜欢命名参数绑定。 这给“错误地设置或注册参数”SQLException。 为什么发生这种情况? OracleConnection conn = getAppConnection(); String q = "BEGIN INSERT INTO tb (id) values (claim_seq.nextval) returning id into :newId; end;" ; CallableStatement cs = (OracleCallableStatement) conn.prepareCall(q); cs.registerOutParameter("newId", OracleTypes.NUMBER); […]

Connection,Statement和ResultSet在JDBC中多久closures一次?

每次查询之后是否需要closures并在每个查询的开始时进行初始化?

Java JDBC MySQLexception:“ResultSetclosures后不允许操作”

我已经在这工作了将近一天半了,我似乎无法解决这个错误。 我不知道为什么ResultSet被closures。 也许你们中的一些人可以帮助我。 MySQLDatabase: package net.gielinor.network.sql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public abstract class MySQLDatabase { private String host; private String database; private String username; private String password; private Connection connection = null; private Statement statement; public MySQLDatabase(String host, String database, String username, String password) { this.host = host; this.database […]