【问题标题】:SQLCEException was unhandled: Internal Error: Cannot open the shared memory regionSQLCEException 未处理:内部错误:无法打开共享内存区域
【发布时间】:2011-03-02 07:49:03
【问题描述】:

我正在尝试执行 TableAdapter.Fill(dataTable),但由于上述错误而失败。这是...DataSet.Designer.cs中的代码

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
public virtual int Fill(ZenwareDataSet.BatchPDADataTable dataTable) {

     this.Adapter.SelectCommand = this.CommandCollection[0];
     if ((this.ClearBeforeFill == true)) {
         dataTable.Clear();
     }
     int returnValue = this.Adapter.Fill(dataTable); //  <---Fails here.
     return returnValue;
}

这是生成的代码。也许我需要改变一些东西?我想知道我的应用程序是否与数据库有多个连接。这会是什么?感谢您提供的任何帮助。

  • Windows Mobile 6.1 设备 (Trimble Juno SB)
  • SQLServerCompact 3.5 Service Pack 2
  • Microsoft .NET CF 3.5

【问题讨论】:

  • 我知道有类似的问题。但这是在 win mo 设备上。有时它看起来是中间的,但我可以通过我的应用程序的某些调用来重现它。一旦问题出现,它会一直持续到我重新启动设备。在调试过程中,问题似乎消失了,就像如果由于断点而有足够长的延迟,那么就没有问题了。上面的函数似乎被调用了 3 次。
  • 我将用于 WM 设备的 SQL Server CE 版本更改为 SP1,问题似乎消失了,但现在又回来了。有其他人看到这个问题吗?

标签: windows-mobile compact-framework sql-server-ce


【解决方案1】:

看来这个问题的答案是确保没有任何东西可以保持连接打开。由于我继承了这个问题,我不知道所有可以保持开放连接的东西。一旦我将连接集中在一个函数中,我就没有看到错误。

【讨论】:

  • 另外,为您的班级使用单例与连接。在您的应用中只执行一次“connection.open”。
【解决方案2】:

好吧,我是不是觉得自己很蠢。即使有以前的答案,我仍然偶尔会看到上述问题。最后我要解决它,我只能说,“Duh”。我没有关闭我的读者,在这种情况下是 SqlCeDataReader。一旦我关闭阅读器,一切都很好。使这个问题难以解决的原因是,一旦您忘记关闭应用程序中的读取器,下次您尝试执行数据库操作时就会看到问题。到那时你已经忘记了阅读器之前没有关闭。

我希望这对某人有所帮助。我在其他任何地方都没有找到答案,所以如果它确实有帮助,请投票给这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多