2012-10-15 127 views
-2

我創建了一個數據庫,如下所示:從多個類訪問數據庫

Class.forName("org.sqlite.JDBC"); 

    Connection connection = null; 

    try 
    { 
     connection = DriverManager.getConnection("jdbc:sqlite:ebank.db"); 
     final Statement statement = connection.createStatement(); 
     statement.setQueryTimeout(30); 

     statement.executeUpdate("create table if not exists employee (id integer,firstname string, lastname string, username string, password string, lgdin integer)"); 
//   statement.executeUpdate("insert into person values(1, 'leo')"); 
//   statement.executeUpdate("insert into person values(2, 'yui')"); 
//   ResultSet rs = statement.executeQuery("select * from person"); 

//   while(rs.next()) 
//   { 
//    System.out.println("name = " + rs.getString("name")); 
//    System.out.println("id = " + rs.getString("id")); 
//   } 


    } 
    catch(SQLException e) 
    { 
     System.err.println(e.getMessage()); 
    } 
    finally 
    { 
     try 
     { 
      if (connection !=null) 
      { 
       connection.close(); 
      } 
     } 
     catch(SQLException e) 
     { 
      System.err.println(); 
     } 
    } 

什麼,我需要做的是在我的應用程序從其他類訪問該數據庫。首先,我試圖從另一個類添加兩個字符串變量到這個數據庫,但我無法訪問語句對象來做到這一點。我會怎麼做?

回答

0

返回connection從這個類,並做任何你想在其他類。

暴露getDBConnection()releaseResources(Connection connection)方法在這個類

public class DBConnectionManager { 

    public static Connection getDBConnection() throws Exception { 
     //some code to create connection 
     return connection; 
    } 


    public static void releaseResources(Connection connection) { 
     //close connection if not null 
    } 

} 
+1

您能詳細談談那是什麼?你的意思是定義一個方法嗎? – Nexus490

1

定義與一些公共的方法來處理任何你需要處理數據庫的類。

一個示例可以是一個帶有一些靜態方法的靜態類,包中的每個類都可以直接調用該類。

public static class Database { 
    public Database(String dbName){ 

     //HERE YOU INITIALIZE YOUR DATABASE, create the connection etc. 
     // with an HSQLDB server would be something like this: change with your code. 

     hsqlServer = new Server(); 
     hsqlServer.setDatabaseName(0, dbName); 
     hsqlServer.setDatabasePath(0, "file:db/" + fileName); 
    } 

    public static void start(){ 
     //start database class 
    } 
    public static void connect(){ 
     //create the connectio, something like this: 
     try { 
      Class.forName("org.hsqldb.jdbcDriver"); 
      connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/garby", "sa", ""); 
      } catch (ClassNotFoundException e) { 

      } catch (SQLException e) { 

     } 
    } 
    public stati String getNameById(int id){ 
     //HERE YOU create the statement, get the name while id=id and so on, it's an example 
    } 
} 

在一類,如果你想用你的數據庫:

在main方法,初始化數據庫:

public static void main (String arg[]){ 
    new Database("name"); 
    Database.start(); 
} 

在其他類和方法,只要致電:

Database.connect(); 
Database.myMethodToReturnSomethin(); 
Database.disconnect(); 

(顯然你需要有一個disconnect()和stop()方法)

有了這個方法,你可以簡單地從你的包

0

Singleton設計模式有任何類訪問數據庫是你需要