2012-06-06 66 views
1

我想設計一個Java swing應用程序。我想試驗和使用MVC類型的體系結構,從而將我的UI與實際的邏輯分離,以訪問數據並連接到數據庫。我決定需要創建一個自定義類,其中包含所有連接到數據庫的邏輯,然後在任何特定的表單和按鈕的操作事件中調用此類中的方法。這樣我可以切換數據庫和我需要做的所有事情(如果我有一個包含許多表單的大型代碼庫),請更改JDBC連接字符串以連接到Oracle而不是MySQL。到目前爲止,我有代碼連接到數據庫,但我想弄清楚如何讓它成爲一個類。創建一個類,使用jdbc連接到任何數據庫

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

我會再回到結果從我的連接類來處理,並在屏幕上顯示的成員函數設置。

+0

使用[DAO](http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html)模式。 – kapand

+0

那篇文章看起來對我來說太複雜了...我只是想用上面的代碼創建我自己的類...我是一個初學者,需要更多的指導 – rambokayambo

回答

11

只需創建一個單獨的類,並委託他讓連接到數據庫:

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

謝謝你mate ...你太酷了....另一個問題是,如果我不得不將我的數據庫從mysql更改爲postgress,那麼我不得不在我的類中更改驅動程序名稱和字符串url,然後仍然在我的操作事件中使用相同的調用?對不起,新手問題 – rambokayambo

+0

也是這個類的數據對象訪問層嗎?它如何適應在modevl視圖控制器我猜 – rambokayambo

+0

嘿,我正在做這個類,我得到一個classnotfound異常永遠不會拋出相應的嘗試語句的主體?這與我的try and catch塊有關,我想知道問題出在哪裏。它說的嘗試錯誤....未拋出的excpetion java.lang.classnotfound excpetion必須在拋出之前被捕獲或聲明?我爲顯而易見的問題表示歉意,但我也是新手,試着去抓塊。我知道它有一些事情與我做我沒有聲明這種類型的錯誤,因爲SQLException已經在java.sql包中聲明,因此我沒有得到一個錯誤 – rambokayambo

0

您可以嘗試MySQL JDBC Utilities的API MySQL連接。

這個API提供了非常酷的功能,也滿足您的要求!

0

兩種方法可以使Spring的AbstractRoutingDataSource類的它

  1. 覆蓋determineCurrentLookupKey()方法。

  2. 您可以創建一個基於系統返回Connection的類。

相關問題