在Java中创建JDBC连接池

在Java中创建JDBC连接池,java,mysql,jdbc,hikaricp,Java,Mysql,Jdbc,Hikaricp,我是java新手,我需要关于如何在java应用程序项目中为JDBC创建连接池的帮助。 我已经能够连接到我的数据库,但我的应用程序的性能很慢,因为我在youtube上的很多视频教程中看到,我在每一帧上都会调用连接 这就是我连接数据库的方式。我在每个帧中调用连接,就像在我的大部分帧中调用DBConnection.getConnectDB() 如何在netbeans中为java创建JDBC连接池。多谢各位 DBConnect public class DBConnection { publ

我是java新手,我需要关于如何在java应用程序项目中为JDBC创建连接池的帮助。 我已经能够连接到我的数据库,但我的应用程序的性能很慢,因为我在youtube上的很多视频教程中看到,我在每一帧上都会调用连接

这就是我连接数据库的方式。我在每个帧中调用连接,就像在我的大部分帧中调用
DBConnection.getConnectDB()

如何在netbeans中为java创建JDBC连接池。多谢各位

DBConnect

public class DBConnection {


    public static Connection ConnectDB(){

        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://server/db_name","user","pass");
            System.out.println("Connected");
            return conn;
        }
        catch(Exception ex){

            JOptionPane.showMessageDialog(null, ex);
            return null;
       }}     
}
更新

public static Connection ConnectDB(){


 HikariConfig config = new HikariConfig();
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "AWT-EventQueue-0" com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Access denied for user 'qweqsbra_wagyingo'@'197.251.142.100' (using password: YES)
    at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:543)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:535)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:111)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:72)
    at wagyingohostel.DBConnection.DBConnection.ConnectDB(DBConnection.java:41)
    at wagyingohostel.LoginAndRegistration.Login.<init>(Login.java:34)
    at wagyingohostel.LoginAndRegistration.Login$4.run(Login.java:228)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.sql.SQLException: Access denied for user 'qweqsbra_wagyingo'@'197.251.142.100' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2198)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2229)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:112)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:118)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:443)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:514)
    ... 19 more
BUILD SUCCESSFUL (total time: 20 seconds)
config.setJdbcUrl(“jdbc:mysql://localhost:3306/simpsons");

控制台

public static Connection ConnectDB(){


 HikariConfig config = new HikariConfig();
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "AWT-EventQueue-0" com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Access denied for user 'qweqsbra_wagyingo'@'197.251.142.100' (using password: YES)
    at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:543)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:535)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:111)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:72)
    at wagyingohostel.DBConnection.DBConnection.ConnectDB(DBConnection.java:41)
    at wagyingohostel.LoginAndRegistration.Login.<init>(Login.java:34)
    at wagyingohostel.LoginAndRegistration.Login$4.run(Login.java:228)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.sql.SQLException: Access denied for user 'qweqsbra_wagyingo'@'197.251.142.100' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2198)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2229)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:112)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:118)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:443)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:514)
    ... 19 more
BUILD SUCCESSFUL (total time: 20 seconds)
SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。
SLF4J:默认为无操作(NOP)记录器实现
SLF4J:参见http://www.slf4j.org/codes.html#StaticLoggerBinder 详情请参阅。
线程“AWT-EventQueue-0”com.zaxxer.hikari.pool.HikariPool$PoolInitializationException:初始化池失败:用户'qweqsbra_wagingo'@'197.251.142.100'的访问被拒绝(使用密码:是)
位于com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:543)
在com.zaxxer.hikari.pool.HikariPool.checkFailFast上(HikariPool.java:535)
在com.zaxxer.hikari.pool.HikariPool上。(HikariPool.java:111)
在com.zaxxer.hikari.HikariDataSource。(HikariDataSource.java:72)
在wagingohostel.DBConnection.DBConnection.ConnectDB(DBConnection.java:41)
在wagingohostel.LoginAndRegistration.Login.(Login.java:34)
在wagingohostel.LoginAndRegistration.Login$4.run(Login.java:228)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
在java.awt.EventQueue.access$500(EventQueue.java:97)
在java.awt.EventQueue$3.run(EventQueue.java:709)
在java.awt.EventQueue$3.run(EventQueue.java:703)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
原因:java.sql.SQLException:用户'qweqsbra_wagingo'@'197.251.142.100'的访问被拒绝(使用密码:是)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:3973)
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)上
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:873)
在com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)上
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2198)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2229)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:779)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:425)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
在com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:112)
在com.zaxxer.hikari.util.DriverDataSource.getConnection上(DriverDataSource.java:118)
位于com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
在com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)上
在com.zaxxer.hikari.pool.HikariPool.createPoolEntry上(HikariPool.java:443)
在com.zaxxer.hikari.pool.HikariPool.checkFailFast上(HikariPool.java:514)
... 还有19个
构建成功(总时间:20秒)

您需要为Netbeans中的数据库连接池配置JNDI数据源。请按照下面URL中提到的步骤使用Netbeans ID创建连接池


如果您使用的是maven或gradle(您应该这样做),那么您可以使用像HikariCP这样的池,并创建像这样的jdbc连接池

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.setUsername("bart");
config.setPassword("51mp50n");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

HikariDataSource ds = new HikariDataSource(config);

下面是一个更详细的

您是否使用多线程访问数据库?不要将UI代码与其他层混合使用。这是一个非常浅的“池”-其中只有一个连接。使用你的上级为你编写的一个(例如DBCP)。@PM77-1,有多线程。当我尝试从一个帧导航到另一个帧时,我的应用程序需要很长时间才能响应。用户有权限吗?java.sql.SQLException:用户'qweqsbra_wagingo'@'197.251.142.100'的访问被拒绝(使用密码:是),这是一个自动验证问题。@IvanFontalvo,是,用户有权限。我使用的身份验证凭据与我在初始数据库连接中使用的身份验证凭据相同(这可以正常工作,但会降低我的应用程序的速度)?我需要导入HikariConfig吗?它抛出一个错误是的,您需要导入Jar。可以使用maven/gradle在这里找到方向。请查看我的更新。。。我得到这个错误
SLF4J:未能加载类“org.slf”