1. Trang chủ
  2. » Công Nghệ Thông Tin

chương 4 cập nhật dữ liệu

47 576 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 4 Cập nhật dữ liệu
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Giáo trình
Thành phố Hà Nội
Định dạng
Số trang 47
Dung lượng 531,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung  Câu lệnh SQL  Dùng đối tượng Command  Chỉnh sửa dữ liệu Disconnected  Dùng đối tượng Command với DataTable/DataSet  Dùng đối tượng DataAdapter  Dùng đối tượng CommandBuil

Trang 1

CẬP NHẬT DỮ LIỆU

Chương 4

Trang 2

Nội dung

 Câu lệnh SQL

 Dùng đối tượng Command

 Chỉnh sửa dữ liệu Disconnected

 Dùng đối tượng Command với DataTable/DataSet

 Dùng đối tượng DataAdapter

 Dùng đối tượng CommandBuilder

 Cấu hình DataAdapter “bằng tay”

Trang 3

Câu lệnh SQL

 Câu lệnh Insert

 Câu lệnh Update

 Câu lệnh Delete

Trang 4

• Thêm 1 số phần dữ liệu của 1 dòng

• Thêm dữ liệu được lấy từ 1 bảng khác

 Thêm 1 dòng hoàn chỉnh

Insert into tênBang

Values (giatri1, giatri2, …, giatriN)

Insert into tênBang(cot1, cot2, …, cotN)

Values (giatri1, giatri2, …, giatriN)

Trang 5

Câu lệnh SQL

Insert

 Thêm 1 số phần dữ liệu của 1 dòng

Insert into tênBang(cotK1, cotK2, …)

Values (giatriK1, giatriK2, …)

• Cột không liệt kê ra sẽ nhận giá trị NULL

 Thêm dữ liệu được lấy từ 1 bảng khác

Insert into tênBang1(cot1, cot2, …, CotN)

Select cot1, Cot2, …, CotN

Trang 6

Câu lệnh SQL

Insert

 Chú ý:

• Từ khoá Into trong câu lệnh Insert có thể bỏ,

nhưng không nên bỏ

• Nên liệt kê các cột dữ liệu khi dùng câu lệnh

insert dữ liệu

Trang 7

Select cotK1, cotK2, … into tênBangMoi

From tênBang1, tênBang2, …

Where …

Group By …

 Hoạt động:

Trang 8

Set cot1=newValue1, …, cotN=newValueN

Where cot1 = oldValue1 and … and cotN=oldValueN

 Để xóa giá trị của 1 ô dữ liệu trong bảng,

chúng ta thiết lập giá trị đó bằng null

Update tênBang

Set cot1=null, …

Where cotA = oldValueA …

Trang 9

Câu lệnh SQL

Delete

 Câu lệnh Delete dùng để xóa 1 số dòng dữ

liệu trong bảng

Delete From tênBang

Where cot1=giatri1 and cot2=giatri2 and … and

cotN=giatriN

 Chú ý:

• Delete dùng để xóa cả 1 dòng, chứ không xóa 1 cột của dòng

• Delete không xóa bảng, chỉ xóa dữ liệu

• Để xóa mọi dòng dữ liệu trong bảng nên dùng

Trang 10

Dùng đối tượng Command

 Các bước thực hiện

 Đối tượng Command không có tham số

 Đối tượng Command có tham số

Trang 11

Dùng đối tượng Command

Các bước thực hiện

 3 bước sử dụng đối tượng command để cập

nhật dữ liệu

• Bước 1: Tạo câu SQL

• Bước 2: Tạo đối tượng Command chứa câu SQL

• Bước 3: Gọi phương thức ExecuteNonQuery() của đối tượng Command

Trang 12

Dùng đối tượng Command

Đối tượng Command không có tham số

string strSQL =

"INSERT INTO tênBang(cot1, …) " +

" VALUES (giatri1, …)";

SqlCommand cmd = new SqlCommand (strSQL, conn);

int numberOfRows = cmd.ExecuteNonQuery();

 Câu lệnh Insert

Trang 13

Dùng đối tượng Command

Đối tượng Command không có tham số

string strSQL =

"UPDATE tênBang" +

" SET cot1 = newValue1,…, cotN=giatriN" +

" WHERE cot1=oldValue1 and … and cotN=oldValueN";

SqlCommand cmd = new SqlCommand (strSQL, conn);

int numberOfRows = cmd.ExecuteNonQuery();

 Câu lệnh Update

Trang 14

Dùng đối tượng Command

Đối tượng Command không có tham số

string strSQL =

"DELETE FROM tênBang" +

" WHERE cot1=giatri1 and … and cotN=giatriN";

SqlCommand cmd = new SqlCommand (strSQL, conn);

int numberOfRows = cmd.ExecuteNonQuery();

 Câu lệnh Delete

Trang 15

Dùng đối tượng Command

Đối tượng Command có tham số

 Phương thức tạo câu lệnh Insert

Trang 16

Dùng đối tượng Command

Đối tượng Command có tham số

 Phương thức tạo câu lệnh Update

" where cot1=@OrigCot1 and … and cotN=@OrigCotN"; SqlCommand cmd = new SqlCommand (strSQL, conn);

Trang 17

Dùng đối tượng Command

Đối tượng Command có tham số

 Phương thức tạo câu lệnh Delete

SqlParameterCollection pc = cmd.Parameters;

pc.Add("@cot1", SqlDbType.Kieu);

Trang 18

Dùng đối tượng Command

Đối tượng Command có tham số

 Sử dụng các đối tượng command có tham số

Trang 19

Chỉnh sửa dữ liệu Disconnected

 Trạng thái của DataRow

 Thêm các dòng dữ liệu mới

 Chỉnh sửa các dòng dữ liệu

 Xóa các dòng dữ liệu

 Phiên bản dữ liệu trong DataRow

Trang 20

Chỉnh sửa dữ liệu Disconnected

Trạng thái của DataRow

 Khi chúng ta thao tác trên đối tượng DataRow,

DataRow sẽ tự động ghi nhận lại thao tác đó vào

property trạng thái tenRow.RowState.

 RowState thuộc kiểu DataRowState

Trang 21

Chỉnh sửa dữ liệu Disconnected

Thêm các dòng dữ liệu mới

 Cách 2:

object [] rowValues = {giatri1,giatri2,…};

tenBang.LoadDataRow(rowValues, false );

Trang 22

row["cot1"] = giatrimoi1;

row["cot2"] = giatrimoi2;

… row.EndEdit();

Trang 23

Chỉnh sửa dữ liệu Disconnected

Trang 24

 Cách 2: DataRow row;

int index;

… row = tenBang.Rows[index];

tenBang.Remove(row);

Trang 25

Chỉnh sửa dữ liệu Disconnected

Trang 26

Chỉnh sửa dữ liệu Disconnected

Phiên bản dữ liệu trong DataRow

 Truy cập các phiên bản dữ liệu khác nhau

Trang 27

Chỉnh sửa dữ liệu Disconnected

Phiên bản dữ liệu trong DataRow

 Các giá trị trong enum DataRowVersion

• Current - Lấy giá trị hiện tai

• Original - Lấy giá trị gốc

• Proposed - Lấy giá trị sau BeginEdit và

trước EndEdit

• Default - Lấy giá trị như khi tham số này

chỉ ra

Trang 28

Dùng đối tượng Command với DataTable/DataSet

 Các bước thực hiện

• Bước 1 : Tạo 3 đối tượng Command: insert, update, delete

• Bước 2: Xác định các dòng bị thay đổi trong DataTable

• Bước 3: Xác định loại thay đổi của mỗi dòng này (là insert, update hay delete)

• Bước 4: Dùng các giá trị trong dòng để gán cho các tham

số trong đối tượng command

• Bước 5: Gọi ExecuteNonQuery() để thực thi câu truy vấn

được lưu trong đối tượng command

• Bước 6: Dùng kiểu trả về của ExecuteNonQuery() để xác định lệnh cập nhật có thành công không

– Nếu cập nhật thành công thì chúng ta gọi AcceptChanges()

– Nếu cập nhật không thành công thì chúng ta thiết lập lỗi cho thuộc tính RowError của đối tượng DataRow

Trang 29

Dùng đối tượng Command với DataTable/DataSet

void SubmitChanges()

{

SqlCommand cmdInsert = CreateInsertCommand();

SqlCommand cmdUpdate = CreateUpdateCommand();

SqlCommand cmdDelete = CreateDeleteCommand();

DataViewRowState states =

DataViewRowState.Added | DataViewRowState.Deleted | DataViewRowState.ModifiedCurrent;

 Cập nhật mọi dữ liệu trong DataTable vào CSDL

Trang 30

case DateRowState Modified:

num = SubmitUpdate(row, cmdUpdate);

break ; case DateRowState Added:

num = SubmitInsert(row, cmdInsert);

break ; case DateRowState Deleted:

num = SubmitDelete(row, cmdDelete);

break ; }

Trang 31

Dùng đối tượng Command với DataTable/DataSet

int SubmitInsert( DataRow row, SqlCommand cmdInsert)

{

SqlParameterCollection pc = cmdInsert.Parameters; pc["@Cot1"].Value = row["Cot1"];

Trang 32

Dùng đối tượng Command với DataTable/DataSet

int SubmitDelete( DataRow row, SqlCommand cmdDelete)

{

SqlParameterCollection pc = cmdDelete.Parameters; pc["@Cot1"].Value =

Trang 33

Dùng đối tượng Command với DataTable/DataSet

int SubmitUpdate( DataRow row, SqlCommand cmdUpdate)

{

SqlParameterCollection pc = cmdUpdate.Parameters; pc["@Cot1"].Value = row["Cot1"];

pc["@Cot2"].Value = row["Cot2"];

… pc["@OrginCot1"].Value = row["Cot1", DataRowVersion.Original];

pc["@OriginCot2"].Value =

row["Cot2", DataRowVersion.Original];

 Cập nhật 1 DataRow vào CSDL

Trang 34

Dùng đối tượng DataAdapter

 Đối tượng DataAdapter có 2 nhiệm vụ

• Lấy dữ liệu từ data source và lưu trữ dữ liệu

đó vào trong các đối tượng Disconnected (DataSet, DataTable)

• Cập nhật dữ liệu từ các đối tượng

Disconnected vào data source

Trang 35

Dùng đối tượng DataAdapter

Data source DataAdapter

Trang 36

Dùng đối tượng DataAdapter

 Để cập nhật dữ liệu, DataAdapter cũng dùng các câu lệnh SQL Insert/Update/Delete được lưu trong

3 đối tượng Command của DataAdapter

• InsertCommand

• UpdateCommand

• DeleteCommand

Trang 37

Dùng đối tượng DataAdapter

 Chúng ta có 3 lựa chọn để tạo các đối tượng Command trong DataAdapter

• Dùng đối tượng SqlCommandBuilder để sinh

3 đối tượng Command lúc thực thi (run time)

• Cấu hình 3 đối tượng Command “bằng tay”

• Dùng Data Adapter Configuration Wizard lúc

Trang 38

Dùng đối tượng CommandBuilder

 SqlCommandBuilder sẽ sinh các câu lệnh

Insert/Update/Delete dựa trên câu lệnh select chúng

ta cung cấp

 SqlCommandBuilder chỉ sinh được câu lệnh

Insert/Update/Delete khi các điều kiện sau thỏa mãn

• Câu lệnh Select chỉ truy vấn trên 1 bảng

• Câu lệnh Select có chứa khóa chính

Trang 39

Dùng đối tượng CommandBuilder

 Xây dựng 3 đối tượng Command và cập nhật

SqlDataAdapter da = new SqlDataAdapter (cmd);

SqlCommandBuilder cb = new SqlCommandBuilder(da);

Trang 40

Cấu hình DataAdapter “bằng tay”

 Khái niệm

 Tạo Command cho câu lệnh Insert

 Tạo Command cho câu lệnh Update

 Tạo Command cho câu lệnh Delete

 Cập nhật dữ liệu

Trang 41

Cấu hình DataAdapter “bằng tay”

Khái niệm

 Để vượt qua giới hạn của SqlCommandBuilder , chúng ta có thể tự xây dựng các đối tượng

command cho data adapter

 Chú ý: Khi chúng ta thêm các parameter cho các đối tượng command của DataAdapter, chúng ta

sẽ dùng 2 thuộc tính của đối tượng Parameter được thiết kế cho việc cập nhật dữ liệu:

Trang 43

Cấu hình DataAdapter “bằng tay”

Tạo Command cho câu lệnh Insert

private SqlCommand CreateInsertCommand()

Trang 44

Cấu hình DataAdapter “bằng tay”

Tạo Command cho câu lệnh Update

private SqlCommand CreateUpdateCommand()

{

string strSQL =

“update tenBang" + " set cot1=@p1, cot2=@p2,…“+

“ where cot1=@q1 and cot2=q2 …”;

SqlCommand cmd = new SqlCommand (strSQL, conn);

Trang 45

Cấu hình DataAdapter “bằng tay”

Tạo Command cho câu lệnh Delete

private SqlCommand CreateDeleteCommand()

Trang 47

Tóm tắt chương 4

Ngày đăng: 28/05/2014, 18:00

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w