如何返回SQL DataReader数据

时间:2013-07-02 17:01:50

标签: c# sql

我是SQL Server的新手,很抱歉,如果我的问题看似微不足道,但我无法找到一个好的答案或至少一个我可以利用的答案。

我的问题是我需要使用sql datareader来获取表GUID,稍后我将使用它来将条目插入到另一个数据库中。关闭datareader将处理其中的所有信息,但我无法找到如何返回datareader值,以便稍后可以在我的代码中调用它们。如何返回或存储稍后要调用的datareader值?

3 个答案:

答案 0 :(得分:3)

不是返回数据读取器而是将所有值添加到集合中。在这里,您需要List<T>T[](数组)。这应该包含对查询结果建模的对象。如果您只返回Guids,那么它将是List<Guid>Guid[]

通常,所有数据库交互都应该位于应用程序的一个层中。此时您想要反序列化查询结果。在代码的其他地方,您应该处理本机C#类型,而不是仍在等待反序列化的查询结果。在这里,您通常只需要获取形成查询所需的任何数据的方法,并返回对查询结果建模的对象或对象集合。

答案 1 :(得分:0)

您可以将其存储到DataTable:

SqlDataReader dr = null; // something you already have
DataTable dt = new DataTable();
dt.Load(dr);

现在,DataTable中的所有行和列都应该可用,直到您完成使用它为止。

注意:DataTable位于:System.Data.DataTable。

答案 2 :(得分:0)

我将如何做(在数据层中):

public List<Guid> GetAllIds()
{
    var cmd = new SqlCommand(yourConnectionString, "SELECT yourIDColumn from YourTable")

    var ids = new List<GUID>();
    Using(var reader = cmd.ExecuteReader())
    {
      while (reader.Read())
      {
        ids.Add(reader.GetGuid(0))
      }
    }
  return ids;
}