我似乎与Windows 7 上的 SQLServerCE SDF 文件中的另一个用户有同样的问题,但是来自该线程的建议并没有解决我的问题。
这与 SQL Server CE v3.1(DLL 版本 3.0.5300.0)有关,我可以在 Windows XP 32 位机器上使用实用程序构建 SDF 文件,但在我的 Win 7 开发机器上使用相同的编译代码和 DLL &一个独立的 Win 8 机器,它将不允许在设备上正确查询数据库。
比如说。
SELECT Name FROM USERS WHERE Name = 'Joey'
应该从数据库返回 1 个结果。如果它是在 windows XP 机器上编译的,它会工作,如果它是在 Windows 7 / 8 机器上编译的,它不会被读取并且结果集是 0。
这是一些奇怪的行为,因为并非所有查询都受到影响。如果用不同的where子句查询同一张表,结果是不同的。直接在 VS 2005 中检查文件或使用我编写的读取 .SDF 文件的实用程序,我可以看到查询在 Windows 7 / 8 上都可以正常工作。
似乎只有将 SDF 文件复制到 Windows 6.5 设备后,这才会成为问题。这与构建文件 SQL Server CE v3.1(DLL 版本 3.0.5300.0)的应用程序具有相同的 DLL。
我已经检查并可以看到它不是 x64 / x32 架构,因为在 32 位或 64 位 Win 7 或 Win XP 机器上构建时结果相同。
从上一篇文章中,我确实看到了一些来自 MS 的简短但有用的信息(http://blogs.msdn.com/b/sqlservercompact/archive/2009/04/01/after-moving-the-database-from-one-platform -to-other-the-first-sqlceconnection-open-takes-more-time.aspx )
我正在寻找解决此问题的方法,但任何其他信息都会有所帮助,例如...如何检查在 Visual Studio 中的设备(如模块)窗口上运行的 DLL 版本确实会有所帮助。