程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET Campact Framework下SQL CE兼容性問題

.NET Campact Framework下SQL CE兼容性問題

編輯:關於.NET

在.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 Files\Microsoft Visual Studio 8 \SmartDevices\SDK\SQL Server\Mobile\v3.0或者C:\Program Files\Microsoft SQL Server 2005 Mobile Edition\Device\Mobile\v3.0。

在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 ]
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文件

點擊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++代碼不能源碼級支持兩個不同的版本,需要進一 步的研究才知道原因。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved