我想实现一个程序:
我想从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);**
}
}
答案 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
将保留连接对象。这样你就可以用它来正常查询数据库了。