0

我有一个主类、一个登录类和一个 gui 类。

在我的主目录中,我正在使用单例模式创建一个数据库连接——只有这个连接的一个实例。

我想从登录访问数据库连接,以在登录系统时验证用户。

我在 main 中的连接方法:

/**
 * Use the Singleton pattern to create one Connection
 */
private static Connection getConnection() {
    if (conn != null) {
        return conn;
    }
    try {
        Class.forName(driver);
    } catch (ClassNotFoundException e) {
        System.out.println(e.getMessage() + " load driver error");
        System.exit(0);
    }
    try {
        //conn = DriverManager.getConnection(host);
        conn = DriverManager.getConnection(host + "create=true", dbUsername, dbPassword);
    } catch (SQLException e) {
        displayErr("Get connection error: ", e);
        System.exit(0);
    }
    return conn;
}

现在,我想创建一个需要使用连接连接的登录方法。该方法是静态的,我不能使用 conn。

我确定这是错误的,但我也尝试过创建一个返回连接 conn 的公共方法,然后尝试从 Main 调用该方法。

conn = Main.returnConnection();

在这种情况下我该怎么办?我很困惑我应该如何建模。

4

2 回答 2

1

与连接池相比,您的方法是如此原始。连接池是指包含缓存的、可重用的连接的池,这些连接可以在未来的请求中使用。正如您所说,为每个用户打开连接是一个昂贵的过程,而且为每个用户提供静态连接也会发生冲突。连接池是在这种情况下应该使用的标准。

connection = connectionPool.getConnection();

上面的代码表示从池中获取一个连接,如果所有连接都已分配,机制会自动创建一个新的。

The most popular libraries are:

于 2013-02-22T13:58:15.710 回答
0

我发现 Singleton 模式的目的是创建某物的一个实例并让每个人都可以看到它。

所以我改为将其设为 public static void,现在可以访问连接,而无需每次都创建一个新连接。

如果我错了,请纠正我,但这很好用。

于 2013-02-08T10:50:48.590 回答