在.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,其相关组件存放的位置也不一样。 在vs2008下开发默认使用CF.net的版本为3.5,但是可以选择2.0,同时默认使用的SQL CE版本是3.5。一般存放在C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\。 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 = DB\db.sdf ]
如果使用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()
解决方法
数据文件升级使用vs2008打开3.0的sdf文件 |
点击OK进行升级。 |
程序引用的升级
在项目的引用中删除System.Data.SqlServerCe的引用,添加 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\System.Data.SqlServerCe.dll到新引用。
在设备上安装SQL CE 3.5下载SQL CE 3.5 可参考 SQL Server Express和SQL Server Compact的应用, 安装后可以在 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500下选择相应的硬件平台进行安装。 |
初步试了一下,natice的C++代码不能源码级支持两个不同的版本,需要进一步的研究才知道原因。(本文由控件中国网转载) |