当前位置:主页   - 电脑 - 网站开发 - ASP.Net
.NET Campact Framework下SQL CE兼容性问题
来源:网络   作者:   更新时间:2010-03-03
收藏此页】    【字号    】    【打印】    【关闭

  在.NET Campact Framework常用SQL CE数据库进行数据存储,SQL CE是一个扩展名为*.sdf的文件数据库,曾经命名为SQL Server for Windows CE和SQL Server Mobile Edition,最新版本命名为SQL Server Compact Edition,在文章中统一叫SQL CE。本文主要讲述SQL CE 3.0和SQL CE 3.5的兼容性问题。

  .NET Campact Framework下开发SQL CE统一使用System.Data.SqlServerCe.dll,该dll封装的命名空间和类是一致的,所以程序代码是统一的。但是由于*.sdf数据文件格式不一样,MS提供不同版本System.Data.SqlServerCe.dll,其相关组件存放的位置也不一样。

  在vs2005下开发默认使用CF.net的版本为2.0,同时默认使用的SQL CE版本是3.0。一般在以下目录 C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0或者C:Program FilesMicrosoft SQL Server 2005 Mobile EditionDeviceMobilev3.0。

  在vs2008下开发默认使用CF.net的版本为3.5,但是可以选择2.0,同时默认使用的SQL CE版本是3.5。一般存放在C:Program FilesMicrosoft SQL Server Compact Editionv3.5Devices。

  sdf数据文件和System.Data.SqlServerCe.dll是一对一绑定,3.5的sdf数据文件只能用3.5的SqlServerCe.dll,3.0的sdf数据文件只能用3.0的SqlServerCe.dll的,彼此互不兼容。

  如果使用3.0的SqlServerCe.dll访问3.5的sdf数据文件会有以下异常

System.Data.SqlServerCe.SqlCeException : You are trying to access an older version of a SQL Server 

Mobile database. If this is a SQL Server CE 1.0 or 2.0 database, run upgrade.exe. 

If this is a SQL Server Mobile 3.0 database, run Compact / Repair. 

[ Db version = 3505053,Requested version = 3004180,File name = DBdb.sdf ]
at System.Data.SqlServerCe.SqlCeConnection.ProcessResults()
at System.Data.SqlServerCe.SqlCeConnection.Open()
at System.Data.SqlServerCe.SqlCeConnection.Open()

  如果使用3.0的SqlServerCe.dll访问3.5的sdf数据文件会有以下异常

System.Data.SqlServerCe.SqlCeInvalidDatabaseFormatException : Unspecified error
at System.Data.SqlServerCe.SqlCeConnection.ProcessResults()
at System.Data.SqlServerCe.SqlCeConnection.Open()
at System.Data.SqlServerCe.SqlCeConnection.Open()

  解决方法

  由于在CF.NET下开发SQL CE 3.0和3.5的代码是一样,可以参考 .NET Compact Framework下SQL CE的使用,所以最简单的解决方法是升级3.0到3.5,这样原先使用3.0的程序可以在不修改源码的情况下使用3.5。

  数据文件升级

  使用vs2008打开3.0的sdf文件

.NET Campact Framework下SQL CE兼容性问题

  点击OK进行升级。

.NET Campact Framework下SQL CE兼容性问题

  程序引用的升级

  在项目的引用中删除System.Data.SqlServerCe的引用,添加 C:Program FilesMicrosoft SQL Server Compact Editionv3.5DevicesSystem.Data.SqlServerCe.dll到新引用。

  在设备上安装SQL CE 3.5

  下载SQL CE 3.5 可参考 SQL Server Express和SQL Server Compact的应,, 安装后可以在 C:Program FilesMicrosoft SQL Server Compact Editionv3.5Deviceswce500下选择相应的硬件平台进行安装。

.NET Campact Framework下SQL CE兼容性问题

  图片看不清楚?请点击这里查看原图(大图)。

  初步试了一下,natice的C++代码不能源码级支持两个不同的版本,需要进一步的研究才知道原因。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明