SqlServerCE Select语句本机异常

时间:2012-09-04 23:25:18

标签: sql-server-ce windows-mobile

WinMobile 6.1教授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();

        }
    }

1 个答案:

答案 0 :(得分: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