Tag: 数据库连接

如何强制超时为DriverManager.getConnection()方法调用?

我有一个应用程序,它将与MySQL建立数据库连接并执行查询。 有时, DriverManager.getConnection()方法调用需要2秒,有时需要30秒。 有没有办法控制此方法2秒后超时? DriverManager.setLoginTimeout()似乎不起作用。 实际上,我可以通过将线程hibernate为超时值并在唤醒后关闭连接来为statement.executeQuery()设置超时。 但它的连接建立部分我无法真正设置超时。 非常感谢任何帮助。

使用runnable jar嵌入MS Access数据库

所以我的目标是制作一个可运行的jar子。 我使用swings创建了一个程序,使用MS Access数据库来获取记录。 所以,我使用绝对路径来引用数据库进行连接。 现在,我打算将这个可运行的jar分发给其他人。 所以我想最好的选择是在MS文件中嵌入MS Access数据库。 但我不知道该怎么做。 我应该在哪里将数据库保存在Project Explorer中? 我应该使用相对路径等。任何forms的帮助都会很明显。 我发现了很多使用Derby数据库的教程,这些教程实现了相同但没有任何与Ms Access数据库有关的教程。 欢迎提出建议! 这是我的代码: – import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Vector; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class r_search extends JFrame implements ActionListener { JFrame frame1; JLabel l0, l1, l2; JComboBox c1; JButton b1; Connection con; ResultSet rs, rs1; Statement st, st1; PreparedStatement […]

实现AbstractMultiTenantConnectionProvider

我正在尝试使用hibernate多租户(从第16章开始 )。 现在我的ExtendedStorageManager使用此方法启动多租户会话: public Session getClabSession(int serverId, String customerSchema) { if (!clabFactories.containsKey(serverId)) { DbServers d = databaseConfigurations.get(serverId); clabCustomerConfig.setProperty( “hibernate.connection.url”, ResourceBundleService.getInstance().decorateBundle( “database.connection.pattern”, d.getHost(), d.getPort())); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(clabCustomerConfig.getProperties()) .buildServiceRegistry(); SessionFactory factory = clabCustomerConfig .buildSessionFactory(serviceRegistry); clabFactories.put(d.getId(), factory); serviceRegistry = null; factory = null; } Session session = clabFactories.get(serverId).withOptions() .tenantIdentifier(customerSchema).openSession(); session.setDefaultReadOnly(false); return session; } 显然我在测试时遇到了第一个错误,因为我完全错过了这里解释的MultiTenantConnectionProvider的实现。 使用grepcode我发现了一些看起来像我想要使用的AbstractMultiTenantConnectionProvider […]

Java新手需要数据库连接方面的帮助

我是Java的新手,甚至是Java数据库连接的新手。 当我把它放在Main类中时,我设法创建了一个数据库连接并查询了一个表。 现在我已将它移动到一个名为Connection的新类中,我收到错误: package lokate; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; public class Connection { private static Statement stmt = null; private static ResultSet rs = null; private static Connection con = null; public Connection() throws SQLException { try { Class.forName(“com.mysql.jdbc.Driver”); String connectionUrl = “jdbc:mysql://localhost:3306/Lokate?” + “user=root&password=”; con = DriverManager.getConnection(connectionUrl); stmt = con.createStatement(); […]

数据库连接池初始化错误

我正在尝试为我的Web应用程序配置HikariCP。 我没有使用任何框架,它是一个简单的Java Web应用程序。 当我尝试通过普通JDBC建立连接时,它成功了,我能够执行所有数据库操作。 但是,当我试图获得连接池的连接时,我在初始化后得到一个exception,我不知道。 下面是我正在使用的配置,我正在上下文监听器中初始化它。 我在Java 1.7上运行,使用HikariCP Java 6依赖2.3.2的Tomcat容器 import java.sql.Connection; import java.sql.SQLException; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import com.mkgcorp.travelweb.util.TLog; import com.sun.jersey.core.util.Base64; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; public class CPInit implements ServletContextListener{ private final static String TAG = CPInit.class.getSimpleName(); private static HikariConfig mConfig; private static HikariDataSource mDataSource; public static String POOL_NAME = “TripPool”; public static int […]

重用与数据库的连接

到现在为止,每当我查询数据库时,我都会打开一个与数据库的新连接。 我如何实现该属性,一旦我打开连接,我可以重用它? 完成后,请告诉我是否可以泄漏资源。

在Java中检测OS Sleep和Wake Up事件

有没有办法让Java程序检测操作系统何时即将进入hibernate状态,或者是否失败,至少检测到唤醒? 实际问题是在特定应用程序中,许多MySQL数据库操作在后台运行。 在Windows机器上进行测试时,这些数据库事务在睡眠/唤醒周期后中断,导致程序中出现大量错误情况。 这些错误通常如下所示: java.net.SocketExceptionexception 消息:软件导致连接中止:recv失败 如果我们能够对“即将入睡”事件作出反应,我们可以尝试暂停后台操作以解决问题。 理想情况下,如果我们能够对“刚刚醒来”事件作出反应,我们至少可以抑制错误消息。

Java和本地数据库

TL DR; 想要一些Java帮助连接到一个真正的本地数据库(无法访问服务器技术),或者如果你可以提供代码,那将是有效的。 它所要做的就是查询数据库(MS Access,虽然可以更改),然后输出一个JSON字符串。 有关更多特异性,请参阅EDIT2。 编辑:在任何人说JDBC之前; 我查看了教程(开始深入阅读),但大部分内容似乎都面向服务器技术,我无法访问。 EDIT2:到目前为止,大多数答案都需要安装某种我很遗憾不能做的事情(没有提及,所以我道歉)。 然而,这是目前正在使用的,我想要一个类似于Java的解决方案,使其更加跨浏览器兼容,而不仅仅是HTA(链接: https : //launchpad.net/accessdb ) 好的,对于长版本。 我正在尝试使用本地数据库来创建桌面样式的应用程序(并可能利用其他项目的知识)。 我可以创建的数据库没有问题(MS Access 2003,恰好可以快速获得)。 目前我正在使用ActiveX脚本来处理HTML应用程序中的数据库(* .HTA文件仅适用于Internet Explorer),我真的想让这个更多的跨浏览器(如果公司EVER切换到实际的浏览器) )通过使用JAVA访问数据库,然后将结果输出JSON到局部变量JavaScript可以调用并使用。 老实说,宁愿选择教程类型信息,因为我想真正了解为什么这样做有效,所以我可以稍后修改它以满足我的需要。 我已经安装了Eclipse以及JDK,并且可以使用Java编写小程序,所以不是完全没脑死(但距离P不远)。 我一直在使用JavaScript,因此我可以阅读相当多的Java代码(不同的语法,因为它们不相关,但我知道Java的一点点我可以毫无问题地转换回JS)。 无论如何,任何援助将不胜感激。 我可以继续使用ActiveX开发(我知道它可以在系统上运行,我99%肯定他们会继续使用Internet Explorer,但是,想要一些灵活性)。

什么是关于数据库和JNDI的validationQuery?

我似乎和这个原始SO问题的海报有着同样的问题。 问题是,他用以下评论回答了他自己的问题: 我解决了我的问题,我在我的JNDI数据源中添加了一个validationQuery。 不幸的是,这对我没有任何意义,并没有帮助我解决我的问题。 所以我问:关于我的数据库(Sybase)和用于保存服务器查找信息的JNDI条目,什么是“ validationQuery ”? 提前致谢。

处理MySQL查询耗时太长并抛出“通信链路故障”

我使用JDBC连接发出了一个查询: Connection conn = null Class.forName(“com.mysql.jdbc.Driver”) conn = DriverManager.getConnection(dbHost, dbUser, dbPass) s = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); s.setFetchSize(Integer.MIN_VALUE); r = s.executeQuery (MY_SELECT_QUERY); while(…) { processResultSet(r); } while运行了很长时间来处理ResultSet。 大约1小时后,我得到了例外: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 从服务器成功接收的最后一个数据包是74毫秒。 成功发送到服务器的最后一个数据包是4,351,980毫秒之前。 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3082) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2968) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3516) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:931) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1429) at com.mysql.jdbc.RowDataDynamic.nextRecord(RowDataDynamic.java:416) at […]