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

时间:2012-06-06 13:38:48

标签: java jdbc

我正在尝试设计一个Java swing应用程序。我想尝试并使用MVC类型的体系结构,我的UI与实际逻辑分离,以访问数据并连接到数据库。我已经决定创建一个自定义类,其中包含连接到数据库的所有逻辑,然后在我的action事件中为任何特定的表单和按钮调用此类中的方法。这样我可以切换数据库和我需要做的所有事情(如果我有一个包含许多表单的大型代码库)就是更改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 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:0)

您可以尝试使用MySQL JDBC Utilities API进行MySQL连接。

此API提供非常酷的功能,也符合您的要求!

答案 2 :(得分:0)

你可以采取两种方式

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

  2. 您可以创建一个将根据系统返回Connection的类。

答案 3 :(得分:0)

您可以使用Hibernate之类的高级工具,或者如果您的数据库使用简单,则可以尝试Commons DbUtils

礼仪连接代码

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

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