0

私は2つのクラスを持っています:

MAINおよびDBCONNECT

DBCONNECTには、データベース/テーブルに接続、挿入、および更新するメソッドを含むすべてのコーディングがあります。

MAINは、GUIが作成され、DBCONNECTクラスを使用する場所です。

DBCONNECTクラスで、入力情報をテーブルに書き込むメソッドを作成しました。

String sqlInsert1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES " + Id +"," + FirstName+"," + Surname;
String sqlInsert2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + Id + SpeedLimit + DriversSpeed + Seatbelt + DrunkenDriving + License;
String sqlInsert3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + Id + Points;

 public void writeToDB(String sqlInsert1, String sqlInsert2, String sqlInsert3)
    {
        try
        {
            Statement st = conn.createStatement();
            st.executeUpdate(sqlInsert1);
            st.executeUpdate(sqlInsert2);
            st.executeUpdate(sqlInsert3);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, "Error: Could not read from database");
        }
    }

そして、私のMAINクラスでは、 [保存]ボタンがクリックされたときにこのメソッドを使用したいと思います

public void actionPerformed(ActionEvent ae)
{
    if (ae.equals(save))
    {
        database.writeToDB();
    }
}

それは私にエラーを与え続けます

required:java.language.String,java.language.String,java.language.String

ここで私が間違っていることを教えてください。

4

2 に答える 2

3

あなたはこのように書く必要があります:

public void actionPerformed(ActionEvent ae)
{
    if (ae.equals(save))
    {
        String sqlInsert1 = "INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES " + Id +"," + FirstName+"," + Surname;
        String sqlInsert2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + Id + SpeedLimit + DriversSpeed + Seatbelt + DrunkenDriving + License;
        String sqlInsert3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + Id + Points;

        database.writeToDB(sqlInsert1,sqlInsert2,sqlInsert3);
    }

これは、メソッドがwriteToDB3つのパラメーターを受け入れString、コードで呼び出すときに引数を指定していないためです。

また、メソッドの前に作成した文字列変数はwriteToDb、メソッドでパラメーターとして宣言された変数と同じではありませんwriteToDB

引数とパラメータの違いを知るためにこの質問を見てください

于 2012-11-01T10:23:09.707 に答える
0

私の理解から

writeToDB();を呼び出す正確な関数はありません。はパラメータで定義されていwriteToDB()ますが、関数呼び出しでは空のパラメータが使用されているためです。

これの代わりに

   database.writeToDB();

このようなものを使用する必要があります。これらの変数を使用して、actionPerformed()内でここで初期化します。

   database..writeToDB(sqlInsert1,sqlInsert2,sqlInsert3);

また、値の後の挿入ステートメントの括弧を見逃しました

例:

   sqlINsert1="INSERT INTO Tablename(ID, StreetName, City)Values(,))";
于 2012-11-01T10:25:39.423 に答える