muh*_*hif 47 .net c# asp.net datareader sqldatareader
我通常使用,DataSet因为它非常灵活.最近我被分配了代码优化任务,为了减少对数据库的命中,我在一个程序中更改了两个查询.一个Query返回count,另一个返回actual data.也就是说,My stored procedure返回两个表.现在,我知道如何使用读取两个表DataSets,但我需要使用读取两个表DataReader.寻找我发现了这个.
我按照文章编写了这样的代码:
dr = cmd.ExecuteReader();
while (dr.Read())
{
}
if (dr.NextResult()) // this line throws exception
{
   while (dr.Read())
{
但是我在dt.NextResult上得到了一个例外.例外情况是:
Invalid attempt to call NextResult when reader is closed.
我也试图谷歌上面的错误,但仍然无法解决问题.任何帮助都感激不尽.我需要使用多个表读取datareader,这可能吗?
Pra*_*ana 56
试试这个,因为一旦任务结束,这将关闭连接,数据读取器和命令,这样就不会给datareader关闭异常
也请像这样if(reader.NextResult())检查以检查下一个结果,
using (SqlConnection connection = new SqlConnection("connection string here"))
{
    using (SqlCommand command = new SqlCommand
           ("SELECT Column1 FROM Table1; SELECT Column2 FROM Table2", connection))
    {
        connection.Open(); 
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                MessageBox.Show(reader.GetString(0), "Table1.Column1");
            }
            if(reader.NextResult())
            {
               while (reader.Read())
              {
                MessageBox.Show(reader.GetString(0), "Table2.Column2");
              }
            }
        }
    }
}
Tim*_*ter 12
我试图重现这个问题(也因为我之前没有在阅读器中使用多个表).但它按预期工作,因此我假设您已省略相关代码.
这是我的测试代码:
using (var con = new SqlConnection(Properties.Settings.Default.ConnectionString))
{
    using (var cmd = new SqlCommand("SELECT TOP 10 * FROM tabData; SELECT TOP 10 * FROM tabDataDetail;", con))
    {
        int rowCount = 0;
        con.Open();
        using (IDataReader rdr = cmd.ExecuteReader())
        {
            while (rdr.Read())
            {
                String object1 = String.Format("Object 1 in Row {0}: '{1}'", ++rowCount, rdr[0]);
            }
            if (rdr.NextResult())
            {
                rowCount = 0;
                while (rdr.Read())
                {
                    String object1 = String.Format("Object 1 in Row {0}: '{1}'", ++rowCount, rdr[0]);
                }
            }
        }
    }
}
| 归档时间: | 
 | 
| 查看次数: | 55163 次 | 
| 最近记录: |