【问题标题】:Code getting stuck on insert query代码卡在插入查询中
【发布时间】:2012-03-09 22:53:37
【问题描述】:

我正在运行一个 Windows 窗体基础应用程序,我正在为 httpwebrequest 使用后台工作程序类。并且使用 webbrowser 控件,两者都将数据保存到 Excel 表中。 它工作正常,或者可能是运气好,现在我看到有时代码卡在插入语句上,它只是进入

myCommand.ExecuteScalar();

不出来。过了一段时间我看到了这个:

CLR 在 60 秒内无法从 COM 上下文 0x7833a8 转换到 COM 上下文 0x7838b0。拥有目标上下文/单元的线程很可能要么进行非泵送等待,要么处理非常长时间运行的操作而不泵送 Windows 消息。这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随着时间的推移不断累积。为避免此问题,所有单线程单元 (STA) 线程都应使用泵送等待原语(例如 CoWaitForMultipleHandles)并在长时间运行的操作期间定期泵送消息。

卡住的查询是:

try
{

    myCommand.CommandText = "Insert into [outputsheet$] (website,[facebook page],DealTitle,Dealtime,Dealprice,Dealvalue,Dealdiscount,Dealsaving,Linktitle,address,Category,[Type of Deal]) Values('" + 
        webaddress.Replace("'", "''") + "','" + facbookaddress.Replace("'", "''") + "','" + title.Replace("'", "''") + "','" + dealtime.Replace("'", "''") + "','" + 
        amount.Replace("'", "''") + "','" + value.Replace("'", "''") + "','" + discount.Replace("'", "''") + "','" + saving.Replace("'", "''") + "','" + 
        titleweb.Replace("'", "''") + "','" + address.Replace("'", "''") + "','" + categoryName.Replace("'", "''") + "','Now Deals')";
    myCommand.ExecuteScalar();

}
catch (Exception exp)
{

}

请帮忙,有什么我需要做的。如何避免它。 谢谢

【问题讨论】:

  • 确实没有必要以这种方式“清理”您的 SQL...现有的库在这方面做得更好。
  • @EdS.i 不确定您指的是什么:S.
  • 所有对.Replace("'", "''");的调用
  • 哦,我确实有一个干净的名称功能,但想在查询中显示所有内容:)。
  • 但我要说的是,已经存在专门用于此目的的库,这些库已经过大量测试,并且不仅仅是在 ' 上进行简单替换。

标签: c# visual-studio-2010


【解决方案1】:

这可能与 MDA 有关,正如此 Microsoft 论坛上的帖子中所指出的那样(一些帖子下来,有点不得不钓鱼): http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/8e04941e-32e1-4901-b360-4859106a5412

【讨论】:

    【解决方案2】:

    也许您可以尝试将 ExecuteNonQuery 封装在 lock() 中,以避免在它忙于执行前一个请求时向 excel 发送请求的可能性?

    编辑:example

    如果你的插入代码被封装在一个类中,你可以这样做:

    static private object thisLock = new object();
    

    及以后:

    lock(thisLock)
    {
       myCommand.ExecuteNonQuery();
    }
    

    我没有做过很多多线程,所以我可能会偏离目标。

    【讨论】:

    • 能否举个例子。
    • 刚刚做过 ;-) 但请查看免责声明。
    • 不,同样的问题,我最好试试这个:link
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2016-09-03
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多