作者:Microsoft 轉貼自: http://www.siyuansoft.com/info_Print.asp?ArticleID=316
演練:使用 SQL Server CE 資料庫 本節將指導您完成使用 Microsoft SQL Server 2000 Windows CE Edition (SQL Server CE) 資料庫時需要執行的主要任務。假定您沒有任何 SQL Server CE 資料庫,需要在新的 Microsoft Visual Studio .NET 項目中建立新的資料庫。 該演練包括以下任務:
- 建立新的 SQL Server CE 資料庫
- 讀取 SQL Server CE 資料庫資料
- 更改 SQL Server CE 資料庫中的資料
闡釋以上每個任務步驟的代碼旨在一起運行。不能在任務中運行僅用於特定步驟的代碼。有關完整代碼清單,請參見代碼清單:使用 SQL Server CE 資料庫。 建立新的資料庫SQL Server CE 中的資料庫是儲存結構化資料的表集合。在可以儲存資料庫之前,必須建立資料庫。在建立資料庫之後,可以建立儲存資料的表。 在本節中,您將建立一個新的資料庫,然後建立一個表,最後將資料添加到該表中。若要執行這些步驟,請使用 SQL Server CE (System.Data.SqlServerCe) .NET Framework 精簡版資料提供者的 SqlCeConnection、SqlCeEngine 和 SqlCeCommand 類。
注意 不能在此任務中運行僅用於特定步驟的代碼。有關完整代碼清單,請參見代碼清單:使用 SQL Server CE 資料庫。
建立新的 SQL Server CE 資料庫
- 啟動 Visual Studio .NET,然後開啟一個新項目。
- 建立對使用的命名空間的引用。
using System; using System.IO; using System.Text; using System.Data; using System.Data.SqlServerCe; using System.Collections; using System.Windows.Forms; using System.Data.Common;
- 建立 WalkThrough 類。
public class WalkThrough { static void Main() { SqlCeConnection conn = null; try {
- 驗證具有您打算使用的名稱的資料庫是否已存在。
if (File.Exists (Test.sdf) ) File.Delete (Test.sdf);
- 使用 System.Data.SqlCeEngine 對象建立名為 Test.sdf 的空資料庫。
注意 SQL Server CE 中,資料庫名稱的副檔名為 .sdf。
SqlCeEngine engine = new SqlCeEngine (Data Source = Test.sdf); engine.CreateDatabase ();
- 串連到這個新資料庫。
conn = new SqlCeConnection (Data Source = Test.sdf); conn.Open();
建立新表
- 使用 System.Data.SqlCeCommand 建立命令類的執行個體。
SqlCeCommand cmd = conn.CreateCommand();
- 運行命令 cmd 建立表。用於建立表的指令必須在 cmd.CommandText 所包含的 SQL 代碼中。
若要使用 SQL Server CE 的 SQL 程式設計語言建立表,請使用 CREATE TABLE 文法。有關更多資訊,請參見《SQL Server CE 線上手冊》中的用於 SQL Server CE 的 SQL 參考。 cmd.CommandText = CREATE TABLE TestTbl(col1 int PRIMARY KEY, col2 ntext, col3 money); cmd.ExecuteNonQuery();
將資料添加到新表中
- 運行命令以添加資料行。與建立表相同,用於添加行的指令也必須在 cmd.CommandText 所包含的 SQL 代碼中。
若要使用 SQL Server CE 的 SQL 程式設計語言將行添加到表中,請使用 INSERT 文法。有關更多資訊,請參見《SQL Server CE 線上手冊》中的用於 SQL Server CE 的 SQL 參考。 cmd.CommandText = INSERT INTO TestTbl(col1, col2, col3) VALUES (0, 'abc', 15.66); cmd.ExecuteNonQuery();
- 建立命令,使用參數將資料多次插入表中。
參數可以更高效地查詢資料庫,因為可以使用一組包含參數的 SQL 陳述式插入多個值。有關更多資訊,請參見《SQL Server CE 線上手冊》的在查詢中使用參數。 cmd.CommandText = INSERT INTO TestTbl(col1, col2, col3) VALUES (?, ?, ?); cmd.Parameters.Add(new SqlCeParameter(p1, SqlDbType.Int)); cmd.Parameters.Add(new SqlCeParameter(p2, SqlDbType.NText)); cmd.Parameters.Add(new SqlCeParameter(p3, SqlDbType.Money)); cmd.Parameters[p2].Size = 50; cmd.Prepare();
- 執行參數化命令,將資料插入表中。
cmd.Parameters[p1].Value = 1; cmd.Parameters[p2].Value = abc; cmd.Parameters[p3].Value = 15.66; cmd.ExecuteNonQuery();
- 清除參數,並檢查已插入表中的資料。
若要使用 SQL Server CE 的 SQL 程式設計語言讀取現有資料,請使用 SELECT 文法。有關更多資訊,請參見《SQL Server CE 線上手冊》中的用於 SQL Server CE 的 SQL 參考。 cmd.Parameters.Clear(); //Set the command text to a SELECT query. // cmd.CommandText = SELECT * FROM TestTbl;
讀取 SQL Server CE 資料庫資料讀取資料庫資料是一種常見的任務,通常涉及對錶行資訊的訪問。為使用 System.Data.SqlServerCe 執行此任務,您需要 SqlCeDataReader 和 SqlCeCommand 對象。
注意 有關完整代碼清單,請參見代碼清單:使用 SQL Server CE 資料庫。
- 調用 SqlCeCommand 對象的 ExecuteReader 方法以建立 SqlCeDataReader 的執行個體。
SqlCeDataReader rdr = cmd.ExecuteReader();
- 指示資料讀取器 rdr 在行存在時在每行的列中顯示資料。
while (rdr.Read()) {MessageBox.Show(col1 = + rdr.GetInt32(0) + col2 = + rdr.GetString(1) + col3 = + rdr.GetSqlMoney(2)); }
更改 SQL Server CE 資料庫中的資料在建立表後,可以以多種方式修改表中的資料:更改特定資料的屬性,添加和刪除資料行,甚至還可以通過修改表中的列來更改儲存資料的方式。 在本節中,您將更改表項的值,尋找更改的表的資料並處理所有錯誤。為執行這些步驟,您將使用在前面的任務中使用的類:SqlCeCommand 和 SqlCeDataReader。另外,您將使用 SqlCeException 進行錯誤處理。
注意 不能在此任務中運行僅用於特定步驟的代碼。有關完整代碼清單,請參見代碼清單:使用 SQL Server CE 資料庫。
更新 SQL Server CE 表中的資料
- 設定命令對象以使用 UPDATE 語句。
若要使用 SQL Server CE 的 SQL 程式設計語言更改行列的值,請使用 UPDATE 文法。有關更多資訊,請參見《SQL Server CE 線上手冊》中的用於 SQL Server CE 的 SQL 參考。 cmd.CommandText = UPDATE TestTbl SET col2 = 'some new value' WHERE col1 = 0; cmd.ExecuteNonQuery();
讀取 SQL Server CE 表中的資料
- 設定命令對象以使用 SELECT 語句,然後通過執行 SqlCeCommand.ExecuteReader 建立資料讀取器的執行個體。
cmd.CommandText = SELECT * FROM TestTbl; rdr = cmd.ExecuteReader(); while (rdr.Read()) { MessageBox.Show( col1 = + rdr.GetInt32(0) + col2 = + rdr.GetString(1) + col3 = + rdr.GetSqlMoney(2)); } }
- 使用 SqlCeException 捕獲任何錯誤,然後關閉與資料庫的串連。
catch (SqlCeException e) { ShowErrors(e); } finally { if(conn.State == ConnectionState.Open) conn.Close(); } } public static void ShowErrors(SqlCeException e) { SqlCeErrorCollection errorCollection = e.Errors; StringBuilder bld = new StringBuilder(); foreach (SqlCeError err in errorCollection) { bld.Append(\n Error Code: + err.HResult.ToString(X)); bld.Append(\n Message : + err.Message); bld.Append(\n Minor Err.: + err.NativeError); bld.Append(\n Source : + err.Source); foreach (int numPar in err.NumericErrorParameters) { if (0 != numPar) bld.Append(\n Num. Par. : + numPar); } foreach (string errPar in err.ErrorParameters) { if (String.Empty != errPar) bld.Append(\n Err. Par. : + errPar); } MessageBox.Show(bld.ToString()); bld.Remove(0, bld.Length); } } }
有關 SQL Server CE 中的錯誤處理的更多資訊,請參見《SQL Server CE 線上手冊》中的錯誤處理。 |