我目前有兩個不同的fxml頁面。一個是主屏幕,另一個是處理連接。主屏幕當前正在創建數據庫和初始化時需要的表格。另一頁用於添加和刪除數據庫中的值。現在的問題是,我目前正在主頁上運行一個函數,以在初始化時使用數據庫數據填充選擇框,但是當它運行時,它會嘗試再次創建表並由於表已創建而引發錯誤。有沒有簡單的方法來解決這個問題?數據庫連接,加載數據循環錯誤
下面是主要頁面初始化函數:
public void initialize() {
try {
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
//below gets the connection specified earlier
conn = DriverManager.getConnection(dbURL);
System.out.println("DB Connection Created!");
String createString = "CREATE TABLE Connections (DETAILS VARCHAR(255) NOT NULL, NAME VARCHAR(255) UNIQUE)";
stmt = conn.createStatement();
stmt.execute(createString);
System.out.println("Connections table created!");
//below is for populating the usernames
String sql2 = "Select NICKNAME FROM Users ORDER BY NICKNAME ASC";
stmt = conn.createStatement();
ResultSet rs2 = stmt.executeQuery(sql2);
usernameList.clear();
while(rs2.next()) {
String name = rs2.getString("NICKNAME");
usernameList.add(name);
System.out.println("User initialize: " + name);
}
System.out.println("Objects: " + usernameList);
sourceUsername.setItems(FXCollections.observableArrayList(usernameList));
cbosUsername.setItems(FXCollections.observableArrayList(usernameList));
tiUsername.setItems(FXCollections.observableArrayList(usernameList));
}
catch(Exception e) {
e.printStackTrace();
}
}
有沒有人有一個簡單的方法的任何輸入來解決這個問題?
所以你執行'初始化()'多次?你爲什麼不把create語句移到其他地方,所以你不要執行兩次? – JohnnyAW
問題是我最初需要填充數據,如果沒有創建表,然後嘗試從中選擇數據並拋出錯誤 – dgelinas21
我的意思是,您可以將代碼移動到一個部分,只會被執行一旦啓動,所以在進一步的代碼中,你可以假設,該表正在創建 – JohnnyAW