从另一个类访问数据库连接对象

时间:2014-11-03 10:27:35

标签: java mysql jdbc

我想实现一个程序:

  1. 处理数据库连接的MySQLConnection类
  2. 用于将输入存储在DB
  3. 中的GUI的Screen类
  4. 主要课程
  5. 我想从Screen类调用main方法中创建的MySQLConnection对象。

    到目前为止我所尝试的 - 错误地 - 如下。非常感谢解决这个问题的指针。

    提前致谢!

    主类:

    public class Main {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        //Start main screen
                        Screen start = new Screen(); 
                        start.setVisible(true);
                       //create db connection
                       **MySQLConnection sqlConn = new MySQLConnection();
                       Connection con=sqlConn.connectToDatabase();**
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    

    MySQL连接类:

    public class MySQLConnection {
       public Connection connectToDatabase() {//connect to db   }
       public void addToDatabase(String tableName, ArrayList<String> columns, ArrayList<String> values) {//add a row to table in db}
       public void closeConnection() {//close db connection}
    }
    

    AddScreen类:

    public class Screen extends JFrame{
        ArrayList<String> mainValues= new ArrayList<String>();
    
        //Create GUI
        public Screen(){
            ...
            ArrayList<String> mainValues= new ArrayList<String>(); 
            String mainId = mainI.getText();
            String mainName = mainN.getText();
            mainValues.add(mainId);
            mainValues.add(mainName);
      }
    
        public void saveToDatabase() {
            String[] mainColumns= {"mid", "mname"};
            **con.addToDatabase("main_category", mainColumns, mainValues);**
        }
    }
    

2 个答案:

答案 0 :(得分:2)

问题是Screen类无法访问MySQLConnection对象。有几种方法可以解决这个问题,最简单的方法就是将MySQLConnection对象简单地传递给Screen类。

主要

MySQLConnection sqlConn = new MySQLConnection();
Screen start = new Screen(sqlConn); 
start.setVisible(true);

<强>的MySqlConnection

private Connection con;

public MySQLConnection() {
    this.connectToDatabase();
}

public void connectToDatabase() { 
    this.con = //connect to db   
}

public void addToDatabase(String tableName, ArrayList<String> columns, ArrayList<String> values) {...}

public void closeConnection() {...}

<强>屏幕:

private MySQLConnection sqlConn ;

public Screen(MySQLConnection sqlConn){
    ...
    this.sqlConn = sqlConn;
    String mainId = mainI.getText();
    String mainName = mainN.getText();
    mainValues.add(mainId);
    mainValues.add(mainName);
}

public void saveToDatabase() {
    String[] mainColumns= {"mid", "mname"};
    sqlConn.addToDatabase("main_category", mainColumns, mainValues);
}

答案 1 :(得分:1)

在您的主类中,您需要在Connection对象

中获取返回值
Connection con=sqlConn.connectToDatabase();

现在,con将保留连接对象。这样你就可以用它来正常查询数据库了。