SqlDataReader进入List<> - 最快的方式

时间:2013-12-10 13:52:43

标签: c# ado.net

当我从sql db读取数据并想要将所有项目添加到下面的列表(即eonumlist)中时。我是否需要专门指定每个字段,还是可以批量分配这些数据?我这样做是为了报告,并希望快速获取数据。也许我应该使用数据集。我有40多个字段要加入报告,并希望快速完成。寻找建议。

public static List<EngOrd> GetDistinctEONum()
{
    List<EngOrd> eonumlist = new List<EngOrd>();
    SqlConnection cnn = SqlDB.GetConnection();
    string strsql = "select distinct eonum " +
        "from engord " +
        "union " +
        "select 'zALL' as eonum " +
        "order by eonum desc";
    SqlCommand cmd = new SqlCommand(strsql, cnn);
    try
    {
        cnn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            EngOrd engord = new EngOrd();
            engord.EONum = reader["eonum"].ToString();
            engord.Name = reader["name"].ToString();
            engord.Address = reader["address"].ToString();
            eonumlist.Add(engord);
        }
        reader.Close();
    }
    catch (SqlException ex)
    {
        throw ex;
    }
    finally
    {
        cnn.Close();
    }
    return eonumlist;                
}

2 个答案:

答案 0 :(得分:0)

我做类似的事情,将数据从数据库存储到组合框中。

要执行此操作,请使用以下代码。

 public static void FillDropDownList(System.Windows.Forms.ComboBox cboMethodName, String myDSN, String myServer)
        {
            SqlDataReader myReader;
            String ConnectionString = "Server="+myServer+"\\sql2008r2;Database="+myDSN+";Trusted_Connection=True;";

            using (SqlConnection cn = new SqlConnection(ConnectionString))
            {
                cn.Open();
                try
                {
                    SqlCommand cmd = new SqlCommand("select * from tablename", cn);
                    using (myReader = cmd.ExecuteReader())
                    {
                        while (myReader.Read())
                        {
                            cboMethodName.Items.Add(myReader.GetValue(0).ToString());
                        }
                    }
                }
                catch (SqlException e)
                {
                    MessageBox.Show(e.ToString());
                    return;
                }
            }
        }

这将连接到数据库并读取表的每条记录,将第0列(名称)中的值添加到组合框中。

我认为你可以用列表做类似的事情,确保索引值正确。

答案 1 :(得分:-1)

将数据存储为xml,然后将xml反序列化到列表中。