0

わかりました、私は尋ねなければならない点でちょっと立ち往生しています

main と dbconnect という 2 つのクラスがあります。

私のdbconnectには、データベースに接続するために必要なすべてのメソッドがあり、メインクラスでGUIを作成しましたが、メインで変数を宣言し(テキストボックスで表されるため)、dbconnectでそれらを使用したいという問題がありますクラス

私のdbconnectクラスは次のようになります

import javax.swing.*;
import java.sql.*;

public class DBCONNECT
{
Connection conn;
public void connect()
{

    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection("jdbc:odbc:DriverConn");
    }
    catch(Exception se)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not load driver " + se.getMessage());
    }
}
public void dissconect()
{
    try
    {
        conn.close();
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error : Could not close Database " + e.getMessage());
    }
}
public void writeToDB()
{
    try
    {
        MAIN main = new MAIN();
        Statement st = conn.createStatement();
        String command1 = ("INSERT INTO Drivers (IDNumber, FirstName, LastName) VALUES" + drivID + FName + LName);
        String command2 = "INSERT INTO Offences(IDNumber, SpeedLimit, DriverSpeed, SeatBelt, DrunkenDriving, DriversLicense) VALUES" + drivID + intspeed + intDSpeed + strSeat + strDrunk + strLicense;
        String command3 = "INSERT INTO DriverPoints(IDNumber, Points) VALUES" + drivID + intpoints;
    }
}
public ResultSet select(String sql)
{
    try
    {
        Statement st = conn.createStatement();
        return st.executeQuery(sql);
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not read from database");
    }
    return null;
}
public int change (String sql)
{
    try
    {
        Statement st = conn.createStatement();
        return st.executeUpdate(sql);
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not Update Database");
    }
    return -1;
}
}

誰か助けてくれませんか?

4

6 に答える 6

2

変数を宣言するか、メイン クラスで変数のアクセサ メソッドpublicを作成します。メインクラスのインスタンスをクラスに渡して、それへの参照を持たせる必要があります。DBCONNECT

于 2012-10-22T05:47:44.270 に答える
1

両方のクラスを同じフォルダーに配置し、コードを使用してそれらを同じパッケージに配置します。

package <package_name>;

次に、メイン クラスで public 変数と protected 変数を使用できます。

于 2012-10-22T05:52:53.873 に答える
1

それらを静的にします。これで仕事ができます。

于 2012-10-22T05:49:31.720 に答える
1

これらの変数を公開および静的にすることは可能でしょうか? その後、Main クラスを使用してそれらを参照することで、それらを使用できます。
例:
Main.drivlD

于 2012-10-22T05:50:33.253 に答える
1

必要な変数をメソッド呼び出しのパラメーターとして渡すのは非常に簡単です。つまり、writeToDB() メソッドは writeToDB(String driveId, ...) のようになります。

ただし、drivId が正しい形式であるかどうかを検証するなどの追加のロジックがある場合は、データベースに保存する属性を保持するための別のクラスを作成する必要があります。したがって、テキスト ウィジェットからこのオブジェクトを更新し、validate メソッドなどを呼び出してから、データベース ハンドラーに渡します。これにより、モデル関連のデータがビューから分離されます。

于 2012-10-22T05:51:49.040 に答える
0

これを行う一般的な方法は、各情報を Main から dbconnect メソッドに渡すか、データを保持するオブジェクトを作成して dbconnect メソッドに渡すことです。その後、ゲッターを介して必要なものにアクセスできます。Main は循環的な依存関係を導入するため、dbconnect から直接参照しないでください。

于 2012-10-22T06:04:11.427 に答える