Windows 7 SQL CE DB不';在Win 7-Win 8上构建时,无法在Windows 6.5设备上读取

Windows 7 SQL CE DB不';在Win 7-Win 8上构建时,无法在Windows 6.5设备上读取,windows-7,windows-xp,sql-server-ce,windows-mobile-6.5,Windows 7,Windows Xp,Sql Server Ce,Windows Mobile 6.5,我似乎与这里的另一个用户有相同的问题,但是该线程的建议并没有解决我的问题 这与SQL Server CE v3.1(DLL版本3.0.5300.0)有关,因此我可以在Windows XP 32位计算机上使用实用程序构建SDF文件,但在我的Win 7 Dev计算机和独立的Win 8计算机上使用相同的编译代码和DLL,这将不允许在设备上正确查询数据库 比如说 SELECT Name FROM USERS WHERE Name = 'Joey' 应该从数据库返回1个结果。如果它是在windows X

我似乎与这里的另一个用户有相同的问题,但是该线程的建议并没有解决我的问题

这与SQL Server CE v3.1(DLL版本3.0.5300.0)有关,因此我可以在Windows XP 32位计算机上使用实用程序构建SDF文件,但在我的Win 7 Dev计算机和独立的Win 8计算机上使用相同的编译代码和DLL,这将不允许在设备上正确查询数据库

比如说

SELECT Name FROM USERS WHERE Name = 'Joey'
应该从数据库返回1个结果。如果它是在windows XP机器上编译的,它将工作;如果它是在windows 7/8机器上编译的,它将不会被读取,结果集为0

这是一种奇怪的行为,因为并非所有查询都会受到影响。如果使用不同的where子句查询同一个表,则结果不同。直接在VS2005中检查该文件,或者使用我编写的用于读取.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()的简短但有用的信息


我正在寻找解决这个问题的方法,但任何其他信息都会有帮助,例如。。。如何检查Visual Studio中设备(如模块)窗口上运行的DLL版本将非常有用。

如果您不幸不得不使用早期版本的SQL Server CE(<3.0.5300.0),那么这是一个有趣的问题。虽然这在当时是一个限制,但需要一段时间才能解决

我重新检查了设备上的所有东西。现在,尽管安装程序包中包含了适用于3.0.5300.0的正确DLL,但这些DLL并未复制到应用程序目录“$\DEVICE\Program Files\My application”。为了能够在Windows 7/8上编译数据库并使该数据库在Windows 6.5设备上工作,我必须手动确保桌面应用程序和Windows设备中都有正确的文件

我在两个应用程序中包含的文件如下:-

  • sqlceca30.dll
  • sqlcecompact30.dll
  • sqlceer30EN.dll
  • sqlceme30.dll
  • sqlceoledb30.dll
  • sqlceqp30.dll
  • sqlcese30.dll
  • System.Data.SqlServerCe.dll
它们的版本为3.0.5300.0,修改日期为2006年12月22日,我从“C:\Program Files(x86)\Microsoft SQL Server Compact Edition\v3.1”中获取它们,但在任何早期版本(无论如何对我来说)下编译失败

希望它能帮助其他可能陷入困境的人,因为我没有看到太多