首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET Compact Framework 下 SQL CE 開發實務

     編輯:關於.NET

SQL Server Compact(SQL CE)是 Windows CE / Windows Mobile 最常用的嵌入式資料庫,最新版為 SQL Server Compact 3.5 SP1。它也能運行於桌面版 Windows,是 Access 的優質替代品;若不使用預存程序,程式碼幾乎無需修改即可移植至完整版 SQL Server。

組件參考與版本差異

  • SQL CE 3.5:組件路徑通常在 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5
  • SQL CE 3.0:組件路徑通常在 C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile

不同版本 DLL 不相容,但命名空間一致(System.Data.SqlServerCe),程式碼可共用。

SqlCeHelper 通用存取類別

封裝連線、命令、資料讀取、資料集、純量值與交易操作:

class SqlCeHelper : IDisposable {
    private SqlCeConnection connection;
    private SqlCeCommand command;
    private const string connectionString = "Data Source=/DB/db.sdf";

    #region 連線管理
    public void Open() {
        try {
            connection = new SqlCeConnection(connectionString);
            command = connection.CreateCommand();
            command.Connection = connection;
            command.CommandType = CommandType.Text; // CE 不支援預存程序
            connection.Open();
        } catch (DataException e) { Console.WriteLine(e.Message); }
    }

    public void Close() {
        connection?.Close();
        connection?.Dispose();
    }

    public void Dispose() {
        Close();
        command?.Dispose();
    }
    #endregion

    #region 執行操作
    public SqlCeDataReader ExecuteReader(string sql) { /* ... */ }
    public DataSet ExecuteDataSet(string sql) { /* 使用 SqlCeDataAdapter.Fill */ }
    public int ExecuteNonQuery(string sql) { /* 傳回影響列數 */ }
    public object ExecuteScalar(string sql) { /* 傳回單一值 */ }
    #endregion

    #region 交易控制
    public void BeginTransaction() { command.Transaction = connection.BeginTransaction(); }
    public void CommitTransaction() { command.Transaction.Commit(); }
    public void RollbackTransaction() { command.Transaction.Rollback(); }
    #endregion
}

關鍵實作細節

  1. 連線字串:僅需指定 .sdf 檔案路徑,實務上可透過建構函式或 Open() 參數傳入。
  2. CommandType 固定為 Text:SQL CE 不支援預存程序。
  3. 四大執行方法:ExecuteReader(資料流)、ExecuteDataSet(離線資料集)、ExecuteNonQuery(增刪改)、ExecuteScalar(純量)。
  4. 交易支援:BeginTransaction/CommitTransaction/RollbackTransaction 封裝標準 ADO.NET 交易模式。

使用範例

範例資料表結構

SqlCeHelper sqlCe = new SqlCeHelper();
sqlCe.Open();
sqlCe.BeginTransaction();

try {
    if (sqlCe.ExecuteNonQuery("DELETE FROM t") < 0) throw new Exception();
    if (sqlCe.ExecuteNonQuery("INSERT INTO t (f1, f2) VALUES (1, 'abc')") < 0) throw new Exception();

    using (SqlCeDataReader reader = sqlCe.ExecuteReader("SELECT * FROM t WHERE f1 = 1")) {
        while (reader.Read()) Console.WriteLine("reader: f2:{0}", reader["f2"]);
    }

    if (sqlCe.ExecuteNonQuery("UPDATE t SET f2 = 'xyz'") < 0) throw new Exception();

    DataSet ds = sqlCe.ExecuteDataSet("SELECT * FROM t");
    foreach (DataRow dr in ds.Tables[0].Rows)
        Console.WriteLine("dataset: f2:{0}", dr["f2"]);

    sqlCe.CommitTransaction();
} catch {
    sqlCe.RollbackTransaction();
} finally {
    sqlCe.Close();
}

操作流程:建立實例 → 開啟連線 → 開啟交易 → 執行 CRUD → 提交/回滾 → 關閉連線。using 區塊確保 DataReader 正確釋放。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved