SqlDataReader如何填充在asp.net中循环读取的数据

时间:2014-01-03 13:03:24

标签: asp.net c#-4.0 loops

这是我的代码:

SqlConnection SqlConnections = new SqlConnection();
SqlConnections.ConnectionString = Global.con;
SqlCommand SqlCommands = new SqlCommand("SELECT Id,LinkedUserID From Users");
SqlConnections.Open();
SqlCommands.Connection = SqlConnections;
SqlDataReader SqlDataReaders =   SqlCommands.ExecuteReader(CommandBehavior.CloseConnection);
while (SqlDataReaders.Read())
{
   //
}
SqlDataReaders.Close();

我试图用这个代码运行看看读取用户ID和LinkedUserID我希望所有两个ID对所有用户按照我想要的方式消除请让我知道如何读取两个ID并返回到单个id在数据库中产生影响。我希望在任何旧成员的新加入期间在MLM网络应用中使用这样做,这样我就可以轻松地为其他用户创建一个影响点。任何人都有自己的想法。

谢谢

1 个答案:

答案 0 :(得分:2)

首先,您需要一个类来保存您正在获取的数据:

public class LinkData
{
   public int Id { get; set; }
   public int LinkedUserId { get; set; }
}

然后,当您遍历SqlDataReader时,创建该类的实例并存储它们,例如在List<LinkData>变量中:

List<LinkData> links = new List<LinkData>();

using (SqlConnection SqlConnections = new SqlConnection(Global.con))
using (SqlCommand SqlCommands = new SqlCommand("SELECT Id,LinkedUserID From Users", SqlConnections))
{
    SqlConnections.Open();

    using (SqlDataReader SqlDataReaders = SqlCommands.ExecuteReader(CommandBehavior.CloseConnection))
    {
        while (SqlDataReaders.Read())
        {
            LinkData newItem = new LinkData();
            newItem.Id = SqlDataReaders.GetInt32(0);
            newItem.LinkedUserId = SqlDataReaders.GetInt32(1);

            links.Add(newItem);
        }

        SqlDataReaders.Close();
   }

最后,您的Links列表应包含从数据库中提取的所有数据。

这只是绝对的“简单”解决方案 - 在现实世界的代码中,如果数据库中有一个值为NULL,您应该添加一些检查以防止代码崩溃。 / p>