4

我正在尝试设计一个 Java swing 应用程序。我想试验并使用一种 MVC 类型的架构,其中我的 UI 与实际逻辑分离以访问数据并连接到数据库。我决定我需要创建一个自定义类,其中包含连接到数据库的所有逻辑,然后在我的操作事件中为任何特定的表单和按钮简单地调用该类的方法。这样我可以切换数据库,我需要做的(如果我有一个包含许多表单的大型代码库)就是更改 JDBC 连接字符串以连接到 oracle 而不是 MySQL。到目前为止,我有连接到数据库的代码,但我正试图弄清楚如何使这个类成为一个类。

try
     {
         Class.forName("com.mysql.jdbc.Driver");
         Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/prototypeeop","root","triala");
         Statement stmt=con.createStatement();
         ResultSet rs=stmt.executeQuery(sql);

然后,我将从连接类的成员函数返回结果集,以进行处理并显示在屏幕上。

4

4 回答 4

20

只需创建一个单独的类并委托给他获取与数据库的连接:

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";    
    private static String driverName = "com.mysql.jdbc.Driver";   
    private static String username = "root";   
    private static String password = "triala";
    private static Connection con;
    private static String urlstring;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = DriverManager.getConnection(urlstring, username, password);
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection."); 
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found."); 
        }
        return con;
    }
}

然后在代码中获取连接,如下所示:

private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;

con = ConnectionManager.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
于 2012-06-06T14:47:39.047 回答
0

您可以尝试MySQL JDBC Utilities API for MySQL 连接。

这个 API 提供了非常酷的功能,也满足你的要求!

于 2013-05-11T10:06:50.153 回答
0

有两种方法可以做到

  1. 覆盖 Spring 的AbstractRoutingDataSource类的 determineCurrentLookupKey() 方法。

  2. 您可以创建一个基于系统返回 Connection 的类。

于 2013-11-25T03:29:34.663 回答
0

您可以使用像Hibernate这样更高级的东西,或者如果您的数据库使用很简单,那么您可以尝试Commons DbUtils

仪式连接代码

String db = "jdbc:h2:mem:;INIT=runscript from 'classpath:/prototypeeop.sql'"; 
//for H2 in-memory database:
Connection DriverManager.getConnection(db);

请记住Commons DbUtils中的核心类和接口是QueryRunnerResultSetHandler.

于 2020-05-07T22:14:47.063 回答