SqlCeDataAdapter
DataSet đã đưa dữ liệu vào bằng cách sử dụng SqlCeDataAdapter, chúng ta cĩ thể
tạo sự thay đổi dữ liệu và cập nhật dữ liệu nguồn, chúng ta phải chỉ ra ba thuộc tính thêm vào đối tượng SqlCommand cho SqlCeDataAdapter là: UpdateCommand, InsertCommand, và DeleteCommand.
Đoạn code: Sử dụng SqlCeDataAdapter để cập nhật dữ liệu
public static
SqlCeDataAdapter GetPackageDataAdapter(SqlCeConnection conn){ string dmlPackageInfo = "SELECT * FROM Package";
string dmlUpdatePackage="UPDATE Package " + "SET CODE = ?, " +
" DestinationID = ? " + "WHERE ID = ?";
string dmlInsertPackage="INSERT INTO " + "Package(Code, DestinationID) " + "VALUES (?, ?)";
string dmlDeletePackage="DELETE FROM " + "Package " +
"WHERE ID = ?";
SqlCeDataAdapter daPackages = new SqlCeDataAdapter();
daPackages.SelectCommand = new SqlCeCommand(dmlPackageInfo, conn);
daPackages.UpdateCommand = new SqlCeCommand(dmlUpdatePackage, conn); daPackages.UpdateCommand.Parameters.Add("Code", SqlDbType.NVarChar); daPackages.UpdateCommand.Parameters.Add("DestinationID",
SqlDbType.NVarChar);
daPackages.UpdateCommand.Parameters.Add("ID", SqlDbType.Int);
daPackages.InsertCommand = new SqlCeCommand(dmlInsertPackage, conn); daPackages.InsertCommand.Parameters.Add("Code", SqlDbType.NVarChar); daPackages.InsertCommand.Parameters.Add("DestinationID",
SqlDbType.NVarChar);
daPackages.DeleteCommand = new SqlCeCommand(dmlDeletePackage, conn); daPackages.DeleteCommand.Parameters.Add("ID", SqlDbType.Int);
return daPackages; }
SqlCeDataAdapter cập nhật dữ liệu nguồn khi chúng ta gọi phương thức Update. Phương thức Update thao tác qua 5 bước khi cập nhật dữ liệu:
câu lệnh cĩ liên quan.
Bước 2: Sự kiện RowUpdating được đưa ra.
Bước 3: Câu lệnh liên quan được thực thi đối với dữ liệu nguồn.
Bước 4: Sự kiện RowUpdated được đưa ra.
Bước 5: Thuộc tính RowSet của DataRow được thiết lập lại RowState.Unchanged bằng cách gọi phương thức AcceptChanges.
Đoạn code: Cập nhật bảng Package sử dụng SqlDataAdapter
public static void UpdatePackageTable(DataSet dsPackages) { string connstr = @"Data Source=\My Documents\PTSystem.sdf";
using(SqlCeConnection conn = new SqlCeConnection(connstr)) { conn.Open();
SqlCeDataAdapter daPackages = GetPackageDataAdapter(conn); daPackages.Update(dsPackages);
} }
Thao tác với sự kiện cập nhật SqlCeDataAdapter
Khi chúng ta gọi phương thức cập nhật trên SqlCeDataAdapter, cĩ hai sự kiện
được đưa ra. Sự kiện RowUpdating được đưa ra trước câu lệnh Update được thực thi với dữ liệu nguồn. Sự kiện RowUpdated được phát sinh sau khi câu lệnh Update được thực thi với dữ liệu nguồn.
Khi chúng ta nhận một sự kiện RowUpdating, chúng ta sẽ xác định thuộc tính của
đối tượng SqlCeRowUpdatingEventArgs và quyết định tiếp tục cập nhật hay khơng.