2010-06-10 69 views
2

我正在嘗試執行TableAdapter.Fill(dataTable),並且因上述錯誤而失敗。這裏是代碼... DataSet.Designer.csSQLCEException未處理:內部錯誤:無法打開共享內存區域

[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設備(天寶朱諾SB)
  • SQLServerCompact 3.5 Service Pack 2的
  • 微軟.NET CF 3.5
+0

我知道有類似的問題。但是這是一個勝利的設備。有時它似乎是中間的,但我可以用我的應用程序的某些電話重新編制它。一旦問題出現,它會一直持續到我重新啓動設備。在調試過程中,似乎問題消失了,就像由斷點引起的足夠長的延遲一樣,則沒有問題。上述功能似乎被稱爲3次。 – dwaz 2010-06-11 06:18:29

+0

我將WM設備版本的SQL Server CE版本更改爲SP1,並且問題似乎消失了,但現在又回來了。其他人是否看到這個問題? – dwaz 2010-06-26 18:50:35

回答

1

看來這個問題的答案是,以確保沒有保留打開一個連接。因爲我繼承了這個問題,所以我沒有意識到任何可以保持開放連接的東西。一旦我將連接集中在一個函數中,我沒有看到錯誤。

+0

此外,使用連接爲您的課程使用單例。在應用程序中只執行一次「connection.open」。 – dwaz 2010-09-04 20:27:22

1

好吧,我覺得很蠢。即使有了以前的回答,我仍然偶爾會看到上述問題。最後,我正在解決這個問題,我只能說「杜」。我沒有關閉我的讀者,在這種情況下,SqlCeDataReader。一旦我關閉了閱讀器,一切都很好。是什麼讓這個問題很難弄清楚的是,一旦你忘記在應用程序中關閉一個閱讀器,那麼下次你嘗試做一個數據庫操作時,你會發現這個問題。那時你已經忘記了讀者以前沒有關閉過。

我希望這可以幫助別人。我沒有在其他地方找到答案,所以如果答案確實有幫助,請給出答案。