我是.NET 3 / 3.5(C#)编程的新手。这对你来说可能很简单,但对我来说却不是。 我有一个任务是从c#应用程序执行存储过程,使用命令并返回3个不同的数据表proc已在sql 2005中完成,但我想知道如何在c#中获取数据。如果结果集返回多个数据表,那么确切需要c#代码如何处理结果集中的数据表。 感谢
答案 0 :(得分:4)
您可以使用SqlDataAdapter.Fill()方法填充DataSet。这样您就可以使用这个 -
访问多个结果表ds.Tables[0].Rows[0]["Column X"];
ds.Tables[1].Rows[0]["Column Y"];
ds.Tables[2].Rows[0]["Column Z"];
...
或者,您可以使用SqlDataReader(如果您希望以仅向前的方式处理数据,则会更快)。要读取第一个结果集的记录,您可以迭代while
循环并调用SqlDataReader.Read()方法。
while(reader.Read())
{
//Process the first result set here.
}
要获取下一个结果集,请调用SqlDataReader.NextResult()方法。
reader.NextResult();
while(reader.Read())
{
//Process the next result set here.
}
答案 1 :(得分:3)
在ExecuteReader
的情况下使用NextResult SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),reader.GetName(1));
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
reader.NextResult();
}
答案 2 :(得分:2)
所以你已经有了DataSet?如果是这样,那很简单。您使用Tables
属性获取特定表格,例如
DataTable users = dataSet.Tables["users"];
如果那不是您的意思,请澄清问题。
答案 3 :(得分:0)
Dim db As Database = DatabaseFactory.CreateDatabase(ApplicationStringResource.DbConn)
Dim cmd As DbCommand = db.GetStoredProcCommand(DbStoreProc.GetFeeCodeStoreProc)
Dim sReader As SqlDataReader = db.ExecuteReader(cmd)
Try
While sReader.Read()
Dim feeCode As New FeeCode()
With feeCode
.FeeCode = sReader("FeeCode")
.Description = sReader("Description")
End With
feeCodeList.Add(feeCode)
End While
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
sReader.Close()
End Try
Return feeCodeList
我使用MS Enterprise Library,上面是我用来通过SQLDataReader获取数据的代码块。