2012-09-04 22 views
0

WinMobile 6.1 Prof. CE OS 5.2.20269 SqlserverCE 3.5。調試時以及部署時都存在問題。SqlServerCE Select語句本機異常

從表中選擇count(*),您將得到一個有效的結果並按預期得到代碼流。

從表中選擇字段名稱,並且executereader會引發本機異常。即錯誤在執行代碼之外,'catch'語句不執行。

鑽研在移動裝置上錯誤的細節示出了示數的dll是sqlceqp35.dll在SqlCeDataReader.FillMetaData(從initializeDataReader調用)

其他的答案都表示使用 sqlce.repl.ppc.wce4 .armv4.CAB和設備上的朋友。我安裝了這些默認的'設備'選項,但它沒有任何區別。

WinMobile的體驗很小,所以也許我錯過了一些簡單的東西。

有趣的是,我寫入數據庫上游沒有問題。

連接字符串:

private const string MsConn = @"Data Source=Program Files\Inspector\Inspector.sdf;Persist Security Info=False;"; 

數據類功能如下:

public int GetLogonId() 
    { 
     SqlCeConnection conn = new SqlCeConnection(MsConn); 
     conn.Open(); 

     SqlCeCommand cmdSelect = conn.CreateCommand(); 
     SqlCeDataReader r = null; 
     try 
     { 
      const string sqlSelect = "select inspector from Inspector"; 
      //const string sqlSelect = "Select count(*) from Inspector"; This works 
      cmdSelect.CommandText = sqlSelect; 
      //cmdSelect.Prepare(); 
      r = cmdSelect.ExecuteReader();//Native error here 
      return r.Read() ? r.GetInt32(0) : 0; 
     } 
     catch (Exception ex) 
     { 

      throw new Exception("GetLogonId " + ex.Message); 
     } 
     finally 
     { 
      conn.Close(); 
      cmdSelect.Dispose(); 

     } 
    } 
+0

你確定該列是'inspector'而不是'Inspector'? (可能是cAsE SenSiTIvE - 對CE不夠熟悉,無法確定是否存在問題。) –

+0

Hi Aaron,不應該區分大小寫,但我已經重複檢查,列名是'inspector',感謝Bob –

+0

對象名稱在CE中從不區分大小寫。你有沒有試過[Inspector]? – ErikEJ

回答

0

我在智能設備應用程序面臨着同樣的錯誤。請訪問以下link

您可以硬復位/冷啓動您的設備並重新安裝SQL CE CAB文件:

  1. sqlce.ppc.wce5.armv4i.CAB
  2. sqlce.repl.ppc。 wce5.armv4i.CAB
  3. sqlce.dev.ENU.ppc.wce5.armv4i.CAB