Tag: jdbc

Java中有多少个JDBC连接?

我有一个由大约15种方法组成的Java程序。 而且,这些方法在程序执行期间经常被调用。 目前,我正在每个方法中创建一个新连接并在其上调用语句(数据库在网络上的另一台机器上设置)。 我想知道的是:我应该在main方法中只创建一个连接,并将其作为参数传递给需要连接对象的所有方法,因为它会显着减少程序中连接对象的数量,而不是创建并且在每种方法中经常关闭连接。 我怀疑我没有在当前设计中非常有效地使用资源,并且考虑到该程序将来可能会增长很多,因此还有很大的改进余地。

使用DBCP进行Tomcat配置

我们在嘲笑了一段时间(几个小时)后得到了一个CommunicationsException(来自DBCP)。 错误消息(在Exception中)是在这个问题的结尾 – 但我没有看到在任何配置文件中定义wait_timeout。 (我们应该在哪里看?在tomcat / conf目录之外的某个地方?)。 其次,正如Exception所建议的那样,在哪里放置“Connector / J连接属性’autoReconnect = true’”? 这是tomcat设置文件conf / context.xml中的资源定义: 第三,为什么JVM会等到executeQuery()调用抛出exception? 如果连接超时,getConnection方法应抛出exception,不应该吗? 这是我正在讨论的源代码部分: try { conn = getConnection (true); stmt = conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rset = stmt.executeQuery (bQuery); while (rset.next()) { …. 最后,这里是Stack跟踪的前几行…… com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 84,160,724 milliseconds ago. The last packet sent […]

使用带有JDBCTemplate的预准备语句

我正在使用JDBC模板,并希望使用预准备语句从数据库中读取。 我在.csv文件中迭代多行,并在每一行上执行一些带有相应值的SQL select查询。 我想加快从数据库中读取数据,但我不知道如何让JDBC模板与预处理语句一起使用。 有PreparedStatementCreator和PreparedStatementSetter 。 在此示例中 ,它们都是使用匿名内部类创建的。 但是在PreparedStatementSetter类中,我无法访问我想在预准备语句中设置的值。 因为我正在迭代.csv文件,所以我不能将它们硬编码为String,因为我不知道它们。 我也无法将它们传递给PreparedStatementSetter,因为构造函数没有参数。 将我的价值观设定为最终值也是愚蠢的。 我习惯于创建准备好的语句非常简单。 就像是 PreparedStatement updateSales = con.prepareStatement( “UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? “); updateSales.setInt(1, 75); updateSales.setString(2, “Colombian”); updateSales.executeUpdate(): 就像在这个Java教程中一样 。

多用户数据源 – Spring + Hibernate

我正在编写一个支持多个用户的Web应用程序。 每个用户都有自己的数据库 – 使用H2。 所有数据库模式都是相同的。 我希望将Spring + Hibernate用于此应用程序。 所以我坚持如何将用户的数据库与该用户关联 – 可能在HTTPSession中关联它,并扩展spring的AbstractRoutingDataSource? 但这不会影响Hibernate的缓存吗? 另一种方法是使用每个数据源的SessionFactory,即使每个数据源的模式都相同……所以我认为这是一种浪费。 无论如何选择数据源需要是动态的 – 它们不能在上下文文件中预先配置,因为每个新用户都将创建自己的数据库。 有没有现有的框架/解决方案? 我不太了解Hibernate Shards,也许这有用吗?

你如何找到Oracle数据库的URL?

如何找到Oracle数据库的URL和端口? 例: “jdbc:oracle:thin:@host:port:dbName”,“userName”,“password”); 我可以看一下SQL命令或日志/配置文件吗?

在我想要返回ResultSet时关闭JDBC连接的位置

当我关闭Connection时,似乎会自动关闭ResultSet 。 但我想返回ResultSet并在另一个方法中使用它,然后我不知道在哪里关闭Connection和PreparedStatement 。 public ResultSet executeQuery(String sql, String[] getValue) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConn(); pstmt = conn.prepareStatement(sql); if (getValue != null) { for (int i = 0; i < getValue.length; i++) { pstmt.setString(i + 1, getValue[i]); } } rs = pstmt.executeQuery(); […]

JDBC程序中的java.lang.ClassNotFoundException

我在java SE 7中创建了一个简单的JDBC程序,但是在编译程序之后它给出了“java.lang.ClassNotFoundException:org.postgreasql.Driver”错误我在这个链接http://docs.oracle.com/javase/7/之后docs / technotes / guides / jdbc /但还没到,所以请帮忙。

TableModel removeRow()定义

这是我的tableModel: public class d9tableModel extends AbstractTableModel { ArrayList cols = new ArrayList(); ArrayList<ArrayList> data = new ArrayList(); public d9tableModel() { // initial cols and data with database } @Override public int getRowCount() { return data.size(); } @Override public int getColumnCount() { return cols.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { ArrayList selectedRow = […]

有没有使用嵌套while循环实现此程序的不同方法?

目前我的程序工作正常,但是我如何实现这个程序而不使用嵌套的while循环(一个while循环在另一个循环中)。这是一种孩子的编程方式,我的办公室同事不希望我写这样的代码那么有没有不同的方法来实现这个程序或实现上面代码中看到的while循环的正确方法? 这是我的当前代码: package Snomed.Snomed; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Date; import catalog.Root; public class Snomedinfo { public void snomedinfoinsert() { Root oRoot = null; ResultSet oRsSelect = null; PreparedStatement oPrStmt = null; PreparedStatement oPrStmt2 = null; PreparedStatement oPrStmtSelect = null; String strSql = null; String snomedcode = null; ResultSet oRs = null; String refid = […]

使用工厂方法了解JDBC之类的服务提供者框架背后的概念

从Effective Java ( 第1项 : 考虑静态工厂方法而不是构造函数 ): 在编写包含该方法的类时,静态工厂方法返回的对象的类甚至不需要存在。 这种灵活的静态工厂方法构成了服务提供者框架的基础,例如Java数据库连接API(JDBC)。 服务提供者框架是多个服务提供者实现服务的系统,并且系统使实现可用于其客户端,从而将它们与实现分离。 我特别不明白为什么这本书说的是静态工厂方法返回的对象的类在编写包含该方法的类时甚至不需要存在? 有人可以用JDBC作为例子来解释。