【问题标题】:c# datareader keeps hangingc#datareader一直挂着
【发布时间】:2009-12-03 16:26:45
【问题描述】:

我有一个从 mysql 数据库中检索大约 10000 条记录的查询,我正在将这些记录读入一个 .csv 文件。

现在在 70 条记录之后,阅读器挂起并且不再执行任何操作。

在此之前,我的其他代码中从未有过这个(可能是我想要检索的大数据)。

我的代码是这样的:

using (var reader = db.Retrieve(sql))
{
    while (reader.Read()) {

       //write results to my file

    }
}

代码在'while (reader.Read())'处挂起

我读了这个feed,但没有给出真正的答案。还是其他解决方案?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您是否尝试过其他帖子中提出的任何建议?

    尝试查看生成的 SQL 并在 SQL Management Studio 中运行它,看看它在那里运行是否也很慢。

    尝试简化您的查询,看看是否可以解决问题,然后尝试添加一些内容,看看它工作和不工作之间究竟有什么区别。

    【讨论】:

    • 这是一个复杂的查询,从 7 个表中检索总共 28 列
    • 我要重写查询,我想这可能是问题所在。但是,在执行查询后不久我就可以恢复我的数据读取器,所以也许不是查询?
    • 接收到datareader并不意味着查询执行完毕。
    【解决方案2】:

    QueryBrowser 中返回的行的模式是什么? mySQL 是否以类似的方式对返回的结果进行批处理?

    【讨论】:

      【解决方案3】:

      您是否尝试过不将其写入文件?

      您是否尝试在不使用 DataReader 的情况下运行它以确保查询正常?

      如果是这样,可能值得尝试一个更简单的查询,以便它只返回一个字段,例如,如果表定义为具有单列主键,则为主键。

      【讨论】:

        【解决方案4】:

        它会永远挂起还是最终崩溃?如果它崩溃了,把它放在一个 try catch 中,看看异常是什么。将存储过程也放入 try catch 中

        【讨论】:

        • 周围已经有一个 try catch 块。它永远挂着。我等的时间最长的是一个小时。
        【解决方案5】:

        好的,我解决了我案子的悬案问题。 我的查询很复杂,无法立即执行。所以我简化了我的查询,现在我的文件一分钟内就写入了结果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-31
          • 2020-02-09
          • 1970-01-01
          • 1970-01-01
          • 2014-04-04
          • 2015-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多