2015-09-27 56 views
0

你怎麼去把記錄到當一個項目從一個JComboBox,選擇一個JTextField選擇時記錄填寫的JTextField?例如,我正在制定航班預訂系統,並且我有一個可用航班的組合框。下面是帶有指定信息的文本字段,例如出發日期,出發時間,到達日期等。我該如何做到這一點,以便當用戶從組合框中選擇一個項目時(例如,航班名稱爲CX9005),相應的信息從同一行顯示在文本字段中? (前出發的日期是2015年11月12日)從JComboBox中(Java數據庫)

編輯:

所以我想這樣做,與FF。代碼,但我得到了語法錯誤和ResultSet未打開錯誤。

private void combo_FlightItemStateChanged(java.awt.event.ItemEvent evt) {            

    try{ 
    flightID = combo_Flight.getSelectedItem().toString(); 
    String flightName = combo_Flight.getSelectedItem().toString(); 
    String query = "Select * from ACCOUNTS where flightName = \'"+flightName+"\';"; 

    rs = stmt.executeQuery(query); 
    } 
    catch(SQLException err){ 
     JOptionPane.showMessageDialog(UserModule.this, err.getMessage()); 
    } 
}     

此外,我用這個函數連接到我的數據庫,如果有關係。

public void DoConnect() { 
    try{ 
     String host = "jdbc:derby://localhost:1527/UserAccounts"; 
     String uName = "Bryan"; 
     String uPass = "Cruz"; 
     con = DriverManager.getConnection(host, uName, uPass); 

     stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
     ResultSet.CONCUR_UPDATABLE); 
     String sql = "SELECT * FROM ACCOUNTS"; 
     rs = stmt.executeQuery(sql); 
    }catch(SQLException err){ 
     JOptionPane.showMessageDialog(Connect.this, err.getMessage()); 
    } 
} 

此外,我可能不太清楚我的原始帖子。我想要這樣做,以便當用戶從組合框中選擇一個航班時,該航班的所有詳細信息都會顯示在相應的文本字段中。 (如出發日期,出發時間,目的地等)我很困惑如何使這項工作,所以幫助將不勝感激!

回答

0

您使用getSelectedItem()getSelectedValue()comboBox中獲得文本。

然後,您可以創建一個MySQL查詢,如:

 String flightName = yourComboBox.getSelectedItem().toString(); 
     String query= "Select * from yourTable where flightName = \'"+flightName+"\';"; 

然後你就可以在部分與設置將導致所有testfields

第一家門店結果執行使用executeQuery()

此查詢現在在ResultSet對象

 rs = stmt.executeQuery(query); 
     rs.next(); 

現在你有結果對象rs

使用rs.getString(得到columnnumber)從結果

如得到記錄。

String departureDate = rs.getString(4); 
// assuming the column number is 4 

這樣做是爲了獲得所有必需的字符串。 並採用setText()方法

+0

您好,感謝您花時間回答。我向操作添加了更多細節。 –

+0

有看到添加的部分。這必須解決你的問題。我想你錯過了rs.next();聲明 – CoderBrain

0
flightID = combo_Flight.getSelectedItem().toString(); 
String flightName = combo_Flight.getSelectedItem().toString(); 

什麼是上述兩種說法的點集他們尊重列?您無法從同一個組合框中獲取兩個值。要麼你得到flightID或者flighName。

String query = "Select * from ACCOUNTS where flightName = \'"+flightName+"\';"; 

但我得到了一個語法錯誤

不要嘗試手動構建SQL字符串。相反,您可以使用PreparedStatement。這將確保使用正確的分隔符,所以你只要專注於SQL語句:

String flightName = combo_Flight.getSelectedItem().toString(); 

String query = "Select * from ACCOUNTS where flightName = ?"; 
PreparedStatement stmt = connection.prepareStatement(query); 
stmt.setString(1, flightName); 

ResultSet rs = stmt.executeQuery(); 

所以,你需要訪問你的doConnect()方法建立的Connection對象。請注意,方法名稱不應以大寫字符開頭。

此外,我認爲數據庫列名的標準是大寫字的字,所以你應該使用「FlightName」而不是「flightName」作爲列名。