SqlServerCE Select 语句本机异常

Posted

技术标签:

【中文标题】SqlServerCE Select 语句本机异常【英文标题】:SqlServerCE Select statement Native Exception 【发布时间】:2012-09-04 23:25:18 【问题描述】:

WinMobile 6.1 Prof. CE OS 5.2.20269 SqlserverCE 3.5。调试和部署时问题确实存在。

从表中选择count(*),你会得到一个有效的结果和预期的代码流。

从表中选择字段名,executereader 会抛出本机异常。即错误在执行代码之外,'catch' 语句没有执行。

深入研究移动设备上的错误详细信息显示错误 dll 是 SqlCeDataReader.FillMetaData 处的 sqlceqp35.dll(从 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();

        
    

【问题讨论】:

您确定该列是inspector 而不是Inspector? (可能是案例敏感 - 对 CE 不够熟悉,无法确定这是否是一个问题。) 嗨 Aaron,不应该区分大小写,但我已经仔细检查过,列名是“inspector”,谢谢 Bob CE 中的对象名称从不区分大小写。你试过 [Inspector] 吗? 试过 [inspector]。开始认为版本和移动设备类型有些古怪。上游写入愉快地使用了字段名称。检查 SDF 显示写入成功。为了让它完全令人困惑,我将字段名称放在 select count(*) 语句的 where 子句中,它仍然有效。所以问题是特定于 Select 子句的。我认为 sdf 正在进入 bin 中,我将使用 xml 文件来保存数据。 构建一个只做数据库事情的简单应用程序。它在模拟器上工作,在移动设备上失败,所以我部署了错误的文件版本或其他东西。 (开发环境是 VS2008,位于 Winserver 2008R2 64 位)。我会追下去的。感谢所有评论者。 【参考方案1】:

我在智能设备应用程序中遇到了同样的错误。请访问以下link

您可以硬重置/冷启动您的设备并重新安装 sql ce cab 文件:

    sqlce.ppc.wce5.armv4i.CAB sqlce.repl.ppc.wce5.armv4i.CAB sqlce.dev.ENU.ppc.wce5.armv4i.CAB

【讨论】:

以上是关于SqlServerCE Select 语句本机异常的主要内容,如果未能解决你的问题,请参考以下文章

调用构造函数时,Microsoft.Synchronization.Data.SqlServerCe 中缺少方法异常

如果第一个语句引发异常,是不是会执行以下语句?

更改现有 SQL Server CE 数据库的密码异常

带有 IN 语句的 JPA 本机查询

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常

KeyNotFoundException:SQLCE 数据库异常