0

私はこのちょっとした構文で少し問題を抱えています:

Connection con = null;
Statement st = null;
ResultSet rset = null;

/**
 * Creates new form formUsers
 */
public formUsers() {
    initComponents();
    con = SQLInteract.SQLInteract();
    tableUpdate();
}

クラスのコンストラクター メソッドに含まれている、作成済みの MySQL データベースへの接続を呼び出そうとしています。なんらかの方法で構文を台無しにしているだけですか、それともまったくできませんか? それとも、次を使用するのと同じくらい簡単ですか:

    SQLInteract Connect = new SQLInteract();

ご要望に応じて; SQLInteract の構文は次のとおりです。

Connection con = null;
Statement st = null;
ResultSet rset = null;

public SQLInteract() {
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/chemsimdb","root","");
    }catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}
4

3 に答える 3

2

コンストラクターを使用して新しいインスタンスを作成する必要があります。

SQLInteract connect = new SQLInteract();

または、SQLInteract のインスタンスによって表されると思われる接続を既に確立していると述べたので、既存のインスタンスのこの参照を新しいクラスに渡す必要があります。PS: formUsers が FormUsers になるように、クラスに大文字で名前を付けることをお勧めします。

public FormUsers(SQLInteract existingSqlConncetion) {
    initComponents();
    //con will hold a reference to the SQLInteract instance that has previously been constructed
    con = existingSqlConnection;
    tableUpdate();
}
于 2013-04-30T16:52:24.193 に答える
0

MySQL 接続がそのクラスで既に確立されている場合は、コンストラクターを呼び出すべきではないと私には思えます (私は間違っているかもしれませんが)。MySQL 接続への参照を保持し、単にその接続を要求する、そのクラスの既にインスタンス化されたオブジェクトを使用する必要があります。

「既に作成済み」という意味であれば、DB に接続するコードがそのコンストラクターにあり、単純にそれを呼び出したい場合は、新しいオブジェクトを作成する必要があります。

SQLInteract connect = new SQLInteract();

それとあなたが書いたものとの小さな違いは、接続の小文字のCです。ここでは、クラスではなくメンバーオブジェクトに名前を付けていることを思い出してください(これはあなたのタイプミスだと思いますが、確認してください)

于 2013-04-30T16:51:42.143 に答える
-1

あなたはすでにデータベースへの接続を確立していると言いました。私はあなたがこのようにしたと仮定します:

SQLInteract sqlInteract = new SQLInteract();

次に、行う必要があるのは次のとおりです。

public formUsers() {
    initComponents();
    con = sqlInteract.con;
    tableUpdate();
}

ただし、もちろん、SQLInteract以前に作成したインスタンスは、接続が必要な場所でいつでも使用できる必要があります。

さらに、クラス (およびコンストラクター) の名前は大文字で始まり、変数、メソッド (コンストラクター以外)、および属性の名前は小文字で始まる Java 命名規則に従うことを強くお勧めします。

于 2013-04-30T17:33:14.903 に答える