Tag: jdbc

使用Java与MySql的Unix套接字连接,以避免JDBC的TCP / IP开销?

是否可以使用Java与MySql建立Unix套接字连接以避免JDBC的TCP / IP开销? 有没有人知道一个库(或者一些库,或许)使这成为可能?

使用Java与MySQL服务器建立SSL连接

我正在尝试使用Java over SSL连接到MySQL服务器。 我收到以下exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot connect to MySQL server on www.mysite.com:3306. Make sure that there is a MySQL server running on the machine/port you are trying to connect to and that the machine this software is running on is able to connect to this host/port (ie not firewalled). Also make sure that the server […]

在java中执行多个SQL语句

我想用Java执行查询。 我创建了一个连接。 然后我想执行一个INSERT语句,完成后,连接关闭,但我想通过连接执行一些insert语句,当循环完成然后关闭连接。 我能做什么 ? 我的示例代码是: public NewClass() throws SQLException { try { Class.forName(“oracle.jdbc.driver.OracleDriver”); } catch (ClassNotFoundException e) { System.out.println(“Where is your Oracle JDBC Driver?”); return; } System.out.println(“Oracle JDBC Driver Registered!”); Connection connection = null; try { connection = DriverManager.getConnection( “jdbc:oracle:thin:@localhost:1521:orcl1”, “test”, “oracle”); } catch (SQLException e) { System.out.println(“Connection Failed! Check output console”); return; } […]

ResultSet的Oracle JDBC性能

到目前为止,我一直在使用这样的查询我的数据库工作得非常好: PreparedStatement prepStmt = dbCon.prepareStatement(mySql); ResultSet rs = prepStmt.executeQuery(); 但后来我需要使用rs.first(); 为了能够多次迭代我的rs 。 所以我现在用 PreparedStatement prepStmt = dbCon.prepareStatement(mySql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 我的问题与两者的表现有关。 如果我使用第二个选项,我会失去什么? 使用第二个选项会对我到目前为止编写的代码产生任何负面影响吗? PS:请注意,我的应用程序是一个使用后端Oracle 11g数据库的多用户,数据库密集型Web应用程序(在Weblogic 10.3.4上)。 谢谢大家的关注。 UPDATE 我的最大重新设置大小将小于1000行和15-20列

数据源拒绝建立连接,来自服务器的消息:“连接太多”

我正在尝试使用连接池库连接到我的数据库: DBPool 。 这是我的源代码。 DBUtils.java package DB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.sql.ConnectionPoolDataSource; import snaq.db.ConnectionPool; import com.mysql.jdbc.Driver; /** * @author decorrea */ public class DBUtils { public static String jdbc_driver_name = “com.mysql.jdbc.Driver”; private static String server_name ; private static String database; private static String username; private static String password; public String getServer_name() { […]

如何在Spring中为两个查询使用相同的连接?

我在基于Spring JdbcTemplate的dao中有以下代码 – getJdbcTemplate().update(“Record Insert Query…”); int recordId = getJdbcTemplate().queryForInt(“SELECT last_insert_id()”); 问题是我有时使用连接池中的不同连接来执行update和queryForInt查询。 这导致返回错误的recordId,因为应该从发出插入查询的同一连接调用MySql last_insert_id()。 我考虑过SingleConnectionDataSource但不想使用它,因为它会降低应用程序性能。 我只想要这两个查询的单一连接。 并非所有服务的所有请求。 所以我有两个问题: 我可以管理模板类使用的连接吗? JdbcTemplate是否执行自动事务管理? 如果我手动将事务应用于我的Dao方法,是否意味着每个查询将创建两个事务? 希望你们能够对这个话题有所了解。 更新 – 我尝试了nwinkler的方法并将我的服务层包装在一个事务中。 我很惊讶地发现在一段时间之后会再次弹出相同的错误。 深入研究Spring源代码我发现了这个 – public T execute(PreparedStatementCreator psc, PreparedStatementCallback action) throws DataAccessException { //Lots of code Connection con = DataSourceUtils.getConnection(getDataSource()); //Lots of code } 因此,与我的想法相反,每个事务不一定有一个数据库连接,但每个查询执行一个连接。 这让我回到了我的问题。 我想从同一个连接执行两个查询。 🙁 更新 –

H2是否支持可序列化的隔离级别?

维基百科将Phantom读取现象描述为: 当在事务过程中执行两个相同的查询,并且第二个查询返回的行集合与第一个查询不同时,会发生幻像读取。 它还指出,对于可序列化的隔离级别,Phantom读取是不可能的。 我试图确保它在H2中是这样,但要么我想错了,要么我做错了什么,或者H2出了什么问题。 不过,这是代码: try(Connection connection1 = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) { connection1.setAutoCommit(false); try(Connection connection2 = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) { connection2.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); connection2.setAutoCommit(false); assertEquals(0, selectAll(connection1)); assertEquals(0, selectAll(connection2)); // A: select insertOne(connection1); // B: insert assertEquals(1, selectAll(connection1)); assertEquals(0, selectAll(connection2)); // A: select connection1.commit(); // B: commit for insert assertEquals(1, selectAll(connection1)); assertEquals(0, selectAll(connection2)); // A: select ??? } […]

Java PreparedStatement和ON DUPLICATE KEY UPDATE:如何知道是否插入或更新了行?

有下面的代码,我怎么知道execute()方法是否导致插入或更新?: Connection c = DriverManager.getConnection(connectionString); PreparedStatement st = c.prepareStatement(“INSERT INTO `table`(`field1`) VALUES (?) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);”); st.setString(1,”some value”); st.execute(); 提前致谢。

使用Java为DB2和Oracle插入BLOB

我目前正在validation在Oracle for DB2上开发的应用程序。 由于我们不想维护两个单独的源,因此我需要一些查询来将blob插入到字段中,这在oracle和db2中都有效。 我没有任何标识符来区分运行应用程序的DB。 我在oracle中使用了utl_raw.cast_to_raw ,在DB2中使用了CAST() as BLOB ,它们是互不兼容的。

我应该将时区与Postgres和JDBC的时间戳分开存储吗?

似乎(也许我错了)如果你想保留JDBC和Postgres发生事件的时区,你需要将时区与时间戳分开存储。 那就是我更愿意给我的ORM / JDBC / JPA一个Java Calendar (或Joda DataTime ),比如说timezone America/New_York到Postgres timestampz字段。 并且我希望无论服务器时区(或默认为UTC)检索都能给我带回时区America/New_York的Calendar 。 但只是查看大多数JDBC代码(以及依赖于它的事情不会发生)。 它是否正确? 当postgres支持时,我需要将tz存储在另一个字段中,这似乎很荒谬。 因此,似乎只有两个选项: 选择timestampz Postgres列作为java.util.String并解析它。 将时区存储为单独的字段。 第一和第二选项需要某种转换拦截器用于我的SQL映射/ ORM库。 什么是JDBC的最佳解决方案? JPA的最佳解决方案是什么(如果与JDBC不同)?