java - 如何在整个应用程序中使用一个数据库连接对象?

标签 java mysql jakarta-ee jdbc odbc

<分区>

我创建了这个返回连接对象的类。我用过MySQL数据库。

public class Connect_db {        
    public Connection getConnection(String db_name,String user_name,String password)
    {
        Connection con=null;
        try
        {
        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost/"+db_name+"?user="+user_name+"&password="+password);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        return con;        
    }
}  

现在我要做的就是实例化这个类一次并获取连接对象。 我想在整个应用程序中使用同一个对象。 另一种解决方案也将受到赞赏。

最佳答案

我想你需要单例模式,这里是一个简单的例子:

public class Connect_db {        
    static Connection con=null;
    public static Connection getConnection()
    {
        if (con != null) return con;
        // get db, user, pass from settings file
        return getConnection(db, user, pass);
    }

    private static Connection getConnection(String db_name,String user_name,String password)
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost/"+db_name+"?user="+user_name+"&password="+password);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        return con;        
    }
} 

然后你就可以像这样使用连接了:

Connect_db.getConnection().somemethods();

但是,您应该考虑 - 当多个线程试图向数据库发出请求时,这将如何在多线程环境中工作。

关于java - 如何在整个应用程序中使用一个数据库连接对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666658/

相关文章:

jsp - 欢迎文件配置替代 web.xml

java - printf("%3d, ...) 不适用于 Eclipse Juno

mysql - 无法获得使用 datediff 返回的正确行

java - 如何在android Activity中使用多重继承?

MySql 在命令行中正确连接,但无法连接远程

php - 在一个 SQL 列中保存多个元素的好方法?

java - ASP.NET 没有像 Java EE 那样的标准对象池?

java - 如何制作 "simple"吞吐量的 servlet-filter?

java - 正则表达式将匹配注释的 SQL 代码

java - 动态添加SQL语句到JDBI StatementLocator