首页 > 解决方案 > SqlDataReader 结果到列表

问题描述

我正在尝试使用 SqlDataReader 从 sql server 中提取记录并转储到列表中。我的对象引用未设置为对象错误的实例。下面是代码。

        private List<Models.AreasOfLaw> aolTitles;

    public List<Models.AreasOfLaw> AreasOfLawListItems
    {
        get { return aolTitles; }
        set { aolTitles = value; OnPropertyChanged("AoLTitles"); }
    }

    private void GetAllAreasOfLaws()
    {
        try
        {
            using (SqlConnection sqlConnection = new SqlConnection(DataSources.RemoteConnectionString()))
            {
                sqlConnection.Open();
                string commandText = "SELECT AreaOfLawTitle FROM [dbo].[CLR.AreaOfLaw] ORDER BY AreaOfLawTitle";
                using (SqlCommand sqlCommand = new SqlCommand(commandText, sqlConnection))
                {
                    sqlCommand.CommandType = CommandType.Text;
                    SqlDataReader reader = sqlCommand.ExecuteReader();
                    while (reader.Read())
                    {
                        string aolTitle = Convert.ToString(reader["AreaOfLawTitle"]);


                        AreasOfLawListItems.Add(new Models.AreasOfLaw { AreaOfLawTitle = aolTitle });
                    }
                    int n = AreasOfLawListItems.Count;
                }
                sqlConnection.Close();

            }
        }
        catch (Exception ex)
        {

        }
    }

我是绝望的人。谢谢你。

标签: c#listsqlclient

解决方案


您的列表aolTItles永远不会被初始化。

您的代码应如下所示

private List<Models.AreasOfLaw> aolTitles = new List<Models.AreasOfLaw>();

public List<Models.AreasOfLaw> AreasOfLawListItems
{
    get { return aolTitles; }
    set { aolTitles = value; OnPropertyChanged("AoLTitles"); }
}

声明一个变量并初始化它是两个独立的步骤,在初始化之前不能使用变量。


推荐阅读