2013-08-26 146 views
-2

我有以下UI enter image description here我不能插入到數據庫MSACCESS

但後來,我不能插入任何數據到ms access database。手動生成的第一行通過ms access database

我不知道什麼是我的代碼這件事,似乎他們都做得很好

private void doSimpan(String idnya, String namanya,String alamatnya,String teleponnya,String emailnya,String passwordnya,String rolesnya) { 
    try { 
     String query = "INSERT INTO MsEmployee (EmployeeID, EmployeeName, EmployeeAddress, EmployeePhone, EmployeeEmail, EmployeePassword, EmployeeRole)VALUES ('"+idnya+"','"+namanya+"','"+alamatnya+"','"+teleponnya+"','"+emailnya+"','"+passwordnya+"','"+rolesnya+"')"; 
     connect.executeQuery(query); 
     fillTable(); 
     cmd.printSuccess("Master Employee", namanya+" saved successfully"); 
    } catch (Exception e) { 
    } 
} 

這裏是execQuery方法

private statement st; 
public void executeQuery(String query) 
    { 
     try { 
      st.executeUpdate(query); 
     } catch (SQLException ex) { 
      System.out.println("Error: " +ex); 
     } 
    } 

這裏是我的printAsk()方法

public Boolean printAsk(String title, String text) 
{ 
    if(JOptionPane.showConfirmDialog(null, text, title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

這裏是我的isValid()方法

private Boolean isValid(String name,String address,String phone,String email,String password) { 
    if(name.equals("") || address.equals("") || phone.equals("") || email.equals("") || password.equals("")) 
    { 
     return false; 
    } 
    else if(val.isNumeric(phone) || !email.contains("@") && !email.endsWith(".com")) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

這裏是代碼我save button

//save 
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
    String idnya = jTextField1.getText(); 
    String namanya = jTextField2.getText(); 
    String alamatnya = jTextArea1.getText(); 
    String teleponnya = jTextField3.getText(); 
    String emailnya = jTextField4.getText(); 
    String passwordnya = new String(jPasswordField1.getPassword()); 
    String rolesnya = jComboBox2.getSelectedItem().toString(); 

    if(status==1) //to insert 
    { 

     if(isValid(namanya, idnya, teleponnya, emailnya, passwordnya)) 
     { 
      if(cmd.printAsk("Master Employee", namanya+" will be entered, continue ?")) 
      { 
       doSimpan(idnya, namanya, alamatnya, teleponnya, emailnya, passwordnya, rolesnya); 
       fillTable(); 
       defaultControl(false,false); 
       crudButton(true); 
      } 
     } 
     else 
     { 
      cmd.printFail("Master Employee", "all field must be filled"); 
     } 
    } 
    else if (status==2)//to update 
    {    

    } 

} 

做我出問題在哪裏? 我得到了「nencor保存成功」但後來,我無法找到MS Access數據庫

Connect構造函數命名nencor任何員工

public Connect() { 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=TIFProject.mdb"); 
     st = con.createStatement(1004, 1008); 
    } catch (Exception ex) { 
     System.out.println("Database Error" + ex); 
    } 

} 
+0

1)使用一個真正的數據庫,該橋式驅動器的不支持,並已上了十年去。 2)檢查你的自動提交設置,這種問題的常見原因。 – jwenting

回答

0

你必須在你的程序添加此。發生

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
connection = DriverManager.getConnection(databaseURL ,"",""); //databaseURL is url for your db 
st=connection.createStatement(); 

錯誤,因爲你沒有提到和初始化上面三行execQuery方法和對其做必要的數據庫interaction.Write變量。

+0

我在'Connect'類 – Cignitor

+0

上犯了錯誤,這取決於它的設置方式,很有可能在沒有憑據的情況下使用jdbc-odbc bridge junk。 – jwenting

+0

@jwenting我已經更新了線程。告訴我你是否需要更多信息。我不知道該做什麼,因爲該程序沒有返回任何錯誤消息 – Cignitor

0
private statement st; 
public void executeQuery(String query) 
    { 
     try { 
      st.executeUpdate(query); 
     } catch (SQLException ex) { 
      System.out.println("Error: " +ex); 
     } 
    } 

你有沒有初始化變量「ST」

+0

什麼是初始化?它是否像'私人聲明st = null'? – Cignitor

相關問題