0

最近、自分でクラスを作成し始めて、単純なクラスを作成することにしましたが、1つの問題が発生しました。何が起こっているのか:

私のForm1には

SqlCeConnection sqlCEconn = new SqlCeConnection(@"Data Source = C:\Dropbox\Visual\Database test2 -treeview\Database test2 -treeview\Database2.sdf");

そして、テストと呼ばれる私の新しいクラスでは、これがあります:

namespace Database_test2__treeview
{
class test
{
    public string testCHECK()
    {

        SqlCeConnection sqlCEconn = new SqlCeConnection();

        if (sqlCEconn.State == ConnectionState.Open)
        {
            return "Database connection: Open";
        }
        if (sqlCEconn.State == ConnectionState.Closed)
        {
            return "Database connection: Closed";
        }
        else
        {
            return "";
        }
    }
}
}

後でForm1imで、新しいクラスを使用して、接続が開いているかどうかを確認するには、次のようにします。

private void Form1_Load(object sender, EventArgs e)
    {
        sqlCEconn.Open();
        test testconnection = new test();

        Toolstrip1.Text = testconnection.testCHECK();

test.csのSqlCeConnectionがForm1のSqlCeConnectionにリンクされていないため、戻り文字列が「Closed」になることは明らかです。

どうすれば簡単にそれを行うことができますか?

ありがとう。

4

5 に答える 5

3

参照が必要な場合は、パラメーターとして送信するだけです。

public string testCHECK(SqlCeConnection thisConnection)
{
    if (thisConnection.State == ConnectionState.Open)
    {
        return "Database connection: Open";
    }
    if (thisConnection.State == ConnectionState.Closed)
    {
        return "Database connection: Closed";
    }
    else
    {
        return "";
    }
}
于 2013-02-24T11:37:25.383 に答える
1

クラスに新しい接続オブジェクトを作成しています。既存のtest接続の状態を確認する場合は、それをクラスまたはメソッドに渡す必要があります。testtestCheck

class test
{
    public string testCHECK(SqlCeConnection sqlCEconn)
    {
        if (sqlCEconn.State == ConnectionState.Open)
        {
            return "Database connection: Open";
        }
        if (sqlCEconn.State == ConnectionState.Closed)
        {
            return "Database connection: Closed";
        }
        else
        {
            return "";
        }
    }
}

そしてそれをこのように呼んでください:

sqlCEconn.Open();
test testconnection = new test();

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn);
于 2013-02-24T11:36:50.877 に答える
0

と呼ばれるクラスを作成し、SqlManagerそこからデータベースに対する接続と操作を管理する必要があります。

これにより、複数の無関係なクラスがまったく同じ接続オブジェクトで機能できるようになります。

于 2013-02-24T11:37:14.477 に答える
0

チェックでは、新しい接続を作成しますが、その間、testCHECKではparamとして従う必要があります

public string testCHECK(SqlCeConnection sqlCEconn)

そしてあなたの電話

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn)
于 2013-02-24T11:37:45.500 に答える
0

テストコンストラクターで接続を開きたいと思います。もう1つの方法は、Form1_Loadで作成したsqlCEconnを引数としてテストオブジェクトに渡すことです。

于 2013-02-24T11:40:39.600 に答える