我是SQL Server的新手,很抱歉,如果我的问题看似微不足道,但我无法找到一个好的答案或至少一个我可以利用的答案。
我的问题是我需要使用sql datareader来获取表GUID,稍后我将使用它来将条目插入到另一个数据库中。关闭datareader将处理其中的所有信息,但我无法找到如何返回datareader值,以便稍后可以在我的代码中调用它们。如何返回或存储稍后要调用的datareader值?
答案 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;
}