ExecuteReader:尚未初始化Connection属性

时间:2014-01-31 18:56:55

标签: c# sql-server connection

ExecuteReader:Connection属性尚未初始化的错误让我觉得合适。我想我的设置正确。我将向您展示如何创建mssql连接,然后创建我正在请求的内容,以及我创建的用于读/写和打开/关闭连接的类。 (应用程序的三个不同部分,但我只是把它们混在一起,所以你可以看到我希望的实际逻辑流程。)

我错过了什么,或者我应该把它连接到哪里?例?我很感激帮助!

以下是我开始使用的使用声明:

using (MSSQL mssqldb = new MSSQL(Constants.msSqlServer, Constants.msSqlDb, Constants.msSqlUid, Constants.msSqlPswd)) 

这是我说的地方"嘿,使用我的MSSQL课程#34获取我的数据;

using (var results = mssqldb.Read("SELECT TOP 1 * FROM AlertLog ORDER BY AlarmID DESC"))
{
    results.Read();
    legacyAlert = Int32.Parse(results["AlarmId"].ToString().Trim());
}

这是MSSQL类

class MSSQL : IDisposable
{
    public MSSQL(string server, string database, string uid, string pswd)
    {
        string msSqlConnectionString = @"Data Source=" + server + ";Initial Catalog=" + database + ";user id=" + uid + ";password=" + pswd;

        SqlConnection msqlConnection = new SqlConnection(msSqlConnectionString);
        msqlConnection.Open();
        Console.WriteLine("MS SQL OPEN!");
    }

    public void Write(string sql)
    {
        using (SqlCommand myCommand = new SqlCommand(sql, msqlConnection))
        myCommand.ExecuteNonQuery();
    }

    public SqlDataReader Read(string sql)
    {
        using (SqlCommand myCommand = new SqlCommand(sql, msqlConnection))
        return myCommand.ExecuteReader();
    }

    public void Dispose()
    {
        try {
            msqlConnection.Close();
        }
        catch (SqlException ex) {
            Console.Error.WriteLine("MS SQL Error - Closing Database");
            Console.Error.WriteLine(ex);
        }
        msqlConnection.Dispose();
    }

    private SqlConnection msqlConnection;
}

1 个答案:

答案 0 :(得分:1)

msqlConnection为空。

您的构造函数创建一个名为msqlConnection的局部变量,但不会分配给该字段。