0

WinMobile 6.1 Prof. CE OS 5.2.20269 SqlserverCE 3.5。デバッグ時と展開時に問題が発生します。

テーブルから count(*) を選択すると、有効な結果と期待どおりのコード フローが得られます。

テーブルからフィールド名を選択すると、executereader はネイティブ例外をスローします。つまり、エラーは実行中のコードの外にあり、'catch' ステートメントは実行されません。

モバイル デバイスのエラーの詳細を調べると、エラーの dll が SqlCeDataReader.FillMetaData (initializeDataReader から呼び出される) の sqlceqp35.dll であることがわかります。

他の回答は、デバイスで 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();

        }
    }
4

1 に答える 1

0

スマート デバイス アプリケーションで同じエラーが発生しました。次の リンクにアクセスしてください

デバイスをハード リセット/コールド ブートして、sql ce cab ファイルを再インストールできます。

  1. sqlce.ppc.wce5.armv4i.CAB
  2. sqlce.repl.ppc.wce5.armv4i.CAB
  3. sqlce.dev.ENU.ppc.wce5.armv4i.CAB
于 2016-01-24T23:25:08.297 に答える