C#对象和代码示例

时间:2009-07-13 05:58:56

标签: c#

我是.NET 3 / 3.5(C#)编程的新手。这对你来说可能很简单,但对我来说却不是。 我有一个任务是从c#应用程序执行存储过程,使用命令并返回3个不同的数据表proc已在sql 2005中完成,但我想知道如何在c#中获取数据。如果结果集返回多个数据表,那么确切需要c#代码如何处理结果集中的数据表。 感谢

4 个答案:

答案 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获取数据的代码块。