如何打印数据集的单个值

时间:2010-08-24 06:05:06

标签: c# ado.net

conn = new SqlConnection(@"Data Source=ASHISH-PC\SQLEXPRESS; initial catalog=bank; integrated security=true");
ada = new SqlDataAdapter("select total_amount from debit_account where account_no=12", conn);
ds = new DataSet();

ada.Fill(ds);

现在,我想打印数据集的值......怎么样?请帮帮我。

2 个答案:

答案 0 :(得分:6)

我建议这里最好的选择实际上不是SqlDataAdapterDataSet,而是SqlCommand。试试这个:

using(SqlConnection conn = new SqlConnection(@"Data Source=ASHISH-PC\SQLEXPRESS; initial catalog=bank; integrated security=true"))
{
    conn.Open()
    using (SqlCommand command  = new SqlCommand("select total_amount from debit_account where account_no=12", conn)
    {
        var result = command.ExecuteScalar();
        Console.WriteLine("The total_amount for the account is {0}", result);
    }
}

SqlCommand上的ExecuteScalar()方法会返回查询返回的第一行第一列中的值,这在这种情况下非常理想。

如果您绝对 使用数据集,那么您需要执行以下操作:

using(SqlConnection conn = new SqlConnection(@"Data Source=ASHISH-PC\SQLEXPRESS; initial catalog=bank; integrated security=true"))
{
    conn.Open()
    using (SqlDataAdapter adapter = new SqlDataAdapter("select total_amount from debit_account where account_no=12", conn)
    {
        var ds = new DataSet();
        adapter.Fill(ds);
        Console.WriteLine("The total_amount for the account is {0}", ds.Tables[0].Rows[0][0]); // Get the value from the first column of the first row of the first table
    }
}

注意: 我已将这两个示例包装在C#using statement中,这可以确保清理所有数据库资源,这样您就不会遇到任何问题泄漏非托管资源。这不是特别困难或复杂,所以非常值得做

答案 1 :(得分:3)

我认为,在这种情况下,您最好(性能方面)使用SqlCommand而不是适配器和数据集,并调用ExecuteScalar方法。

请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

但是,如果必须使用数据集,则ds.Tables[0].Rows[0]["total_amount"]应检索您的值。但是,您可能需要输入值。