-2

私は次のUIを持っています ここに画像の説明を入力

しかし、その後、にデータを挿入できません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 が正常に保存されました」と表示されましnencorたが、ms アクセス データベースで名前が付けられた従業員が見つかりません

私のConnectコンストラクタ

 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);
    }

}
4

2 に答える 2

0

これをプログラムに追加する必要があります。

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

データベースとのやり取りに必要な変数の記述と初期化を行っていないため、エラーが発生しexecQueryました。メソッドの 3 行以上に記述して完了です。

于 2013-08-26T10:11:35.083 に答える
0
private statement st;
public void executeQuery(String query)
    {
        try {
            st.executeUpdate(query);
        } catch (SQLException ex) {
            System.out.println("Error: " +ex);
        }
    }

変数「st」を初期化しましたか

于 2013-08-26T10:17:11.840 に答える