0

我最近开始创建自己的课程,并决定创建一个简单的课程,但遇到了 1 个问题。这是发生了什么:

在我的 Form1 中,我有一个

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

在我的名为 test 的新课程中,我有这个:

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

稍后在 Form1 中,我使用我的新类来检查连接是否打开,方法是:

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

        Toolstrip1.Text = testconnection.testCHECK();

很明显,返回字符串将是“关闭”,因为我在 test.cs 中的 SqlCeConnection 没有链接到我的 Form1 中的 SqlCeConnection

我该如何以简单的方式做到这一点?

谢谢。

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- 如果您想检查现有连接的状态,您应该将其传递给test类甚至testCheck方法:

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

我想你想在测试构造函数上打开你的连接。另一种选择可能是将您在 Form1_Load 上创建的 sqlCEconn 作为参数传递给您的测试对象

于 2013-02-24T11:40:39.600 回答
0

您应该创建一个名为SqlManageror 的类,并从那里管理对数据库的连接和操作。

这将允许多个不相关的类使用完全相同的连接对象。

于 2013-02-24T11:37:14.477 回答
0

在您的检查中创建新连接,同时它应该在您的 testCHECK 中作为参数

public string testCHECK(SqlCeConnection sqlCEconn)

和你的电话

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn)
于 2013-02-24T11:37:45.500 回答