Reader始终返回NULL

时间:2016-01-01 10:43:46

标签: sql-server c#-4.0

我是C#的新手。我想编写一个可以轻松连接到SQL Server数据库的应用程序。我有一个单独的DBConnection类,我想从任何形式调用这个类。

问题是我的“读者”总是返回Null

class DBconnection
{
    private SqlConnection conn;
    private SqlCommand cmd;
    private SqlDataReader rdr;
    private DataTable dt;

    private SqlConnection MyConnection
    {
        get
        {
            if (this.conn == null)
            {
                this.conn = new SqlConnection(DrivingSchool.Properties.Settings.Default.cdsConnectionString);
            }
            return conn;
        }
    }

    private SqlCommand MyCommand
    { 
        get
        {
            if (cmd == null)
            {
                cmd = new SqlCommand();
                MyCommand.Connection = conn;
            }

            return cmd;
        }
    }

    public DataTable RunQuery(string query)
    {
        dt = new DataTable();

        MyCommand.CommandText = query;
        MyCommand.Connection = conn;
        MyConnection.Open();

        rdr = MyCommand.ExecuteReader(CommandBehavior.CloseConnection);

        if(rdr.HasRows)
        {
            dt.Load(rdr);
        }

        MyConnection.Close();

        return dt;
    }
}

1 个答案:

答案 0 :(得分:0)

在我看来,在分解连接的创建和SqlCommand时,你的代码过于复杂。

要填充DataTable,您应该使用SqlDataAdapter(或适用于您使用的数据库的相应DataAdapter),如下所示:

static public DataTable GetDataTableFromQuery(string queryString)
{
    DataTable dt = null;
    string connStr = DrivingSchool.Properties.Settings.Default.cdsConnectionString;

    using (SqlDataAdapter da = new SqlDataAdapter(queryString, connStr))
    {
        da.Fill(dt);
    }

    return dt;
}