创建一个类以使用jdbc连接到任何数据库


问题内容

我正在尝试设计一个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);

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


问题答案:

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

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);