2016-03-02 35 views
0

我正在嘗試使用Java JDBC更新我的表。但我不知道如何使用Prepared Statement來調用主鍵。我嘗試爲我的數據庫列創建一個USER_ID對象,但不知道從哪裏開始。我將如何確定我是否已經更新了我的數據庫?如何獲得執行更新語句的主鍵

CODE

String updateEmployee = employeeTf.getText(); 
String updateDepartment = departmentTf.getText(); 

if(updateEmployee.isEmpty() && updateDepartment.isEmpty()){ 
    JOptionPane.showMessageDialog(null, "You didn't update it"); 
} 
else if(updateEmployee.isEmpty()){ 
    JOptionPane.showMessageDialog(null, "Please update your name"); 
} 
else if(updateDepartment.isEmpty()){ 
    JOptionPane.showMessageDialog(null, "Please update your department"); 
} 
else{ 
    String updateQuery = "UPDATE SAMPLE SET EMPLOYEENAME = ?, DEPARTMENT = ? WHERE USER_ID = ?"; 

    try(Connection con = DBUtilities.getConnection(DBType.JDBC); 
     PreparedStatement myPs = con.prepareStatement(updateQuery);){ 


     myPs.setString(1, employeeTf.getText()); 
     myPs.setString(2, departmentTf.getText()); 
     myPs.setInt(3, "WHAT GOES HERE"); 
     //Execute insert SQL Statement 
     myPs.executeUpdate(); 
     System.out.print("Updated"); 
    } catch (SQLException ex) { 
     DBUtilities.processException(ex); 
    } 
} 
+1

我不明白你問,也許你應該改一下 – 2016-03-02 20:19:51

+0

檢查數據庫,看看它的更新內容。我希望這就是你的意思。 請參閱http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – JavaQuest

+0

不,我沒有運行我的數據庫。因爲在我的索引3.我不知道我會先做什麼,這樣我可以執行我的查詢。我是否需要用返回類型來包裝我的整個代碼?謝謝。 – Francisunoxx

回答

0

我認爲employeeIf對象應該具有像getUserId()方法返回的員工的用戶ID。我不確定你是如何構建這個employeeIf對象的,但它總是應該有一些方法來獲得僱員的userId。 SO myPs.setInt(3,「這是什麼東西」); 應該看起來像 myPs.setInt(3,employeeTf.getUserId());

+0

所以,如果我讓我的方法會包裝整個代碼?謝謝。 – Francisunoxx

2

如果您正在執行UPDATE,則表中必須已存在該記錄。 大約您的應用程序需要以下過程:

  1. 從數據庫中讀取記錄在記錄
  2. 將數據放入您的GUI控件,也保持ID值的地方
  3. 現在用戶點擊「保存」:您將GUI控件中的值傳輸到您的PreparedStatement中,並使用步驟2中的ID構建where參數。
  4. 提交。

如果要創建新記錄,則跳過步驟1,因此沒有ID值。 然後,而不是在步驟3中執行UPDATE,您將需要執行INSERT。