Tải bản đầy đủ (.pptx) (47 trang)

Bài giảng Lập trình trên Windows: Chương 5.5 - Trần Minh Thái

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.84 MB, 47 trang )

Lập trình Windows
Chương 5.5. Cập nhật dữ liệu

1


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”

2


Câu lệnh SQL

• Câu lệnh Insert
• Câu lệnh Update
• Câu lệnh Delete

3


Câu lệnh SQL
Insert


• Câu lệnh Insert dùng để thêm 1 dịng dữ liệu vào bảng
• Thêm 1 dịng hồn chỉnh
• 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 hồn chỉnh

Insert into tênBang
Values(giatri1, giatri2, …, giatriN)

Insert into tênBang(cot1, cot2, …, cotN)
Values(giatri1, giatri2, …, giatriN)
4


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
From tênBang2
Where …


5


Câu lệnh SQL
Insert

• Chú ý:
• Từ khố 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

6


Câu lệnh SQL
Insert

• Copy từ 1 bảng sang 1 bảng khác
Select * into tênBangMoi
From tênBang1

Select cotK1, cotK2, … into tênBangMoi
From tênBang1, tênBang2, …
Where …
Group By …

 Hoạt động:




Tạo bảng “tênBangMoi”
Chép dữ liệu vào “tênBangMoi”

7


Câu lệnh SQL
Update

• Câu lệnh Update dùng để cập nhật (chỉnh sửa) dữ liệu
Update tênBang
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 …

8


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 lệnh Truncate Table
Từ khóa From trong câu lệnh delete có thể bỏ, nhưng khơng nên bỏ

9


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ố

10


Dùng đối tượng Command
Các bước thực hiện

• 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


11


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();

12


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();

13


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();

14


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

SqlCommand CreateInsertCommand()
{
string strSQL;
strSQL = "Insert tênBang(cot1, …) " +
"


values(@cot1, …)";

SqlCommand cmd = new SqlCommand(strSQL, conn);

SqlParameterCollection pc = cmd.Parameters;
pc.Add("@cot1", SqlDbType.Kieu);


return cmd;
}

15


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

SqlCommand CreateUpdateCommand()
{
string strSQL;
strSQL =
"Update tênBang " +
"
"

set cot1=@cot1, …, cotN=@cotN " +
where cot1=@OrigCot1 and … and cotN=@OrigCotN";

SqlCommand cmd = new SqlCommand(strSQL, conn);


SqlParameterCollection pc = cmd.Parameters;
pc.Add("@cot1", SqlDbType.Kieu);


pc.Add(@OrigCot1, SqlDbType.Kieu)


return cmd;
}

16


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

• Phương thức tạo câu lệnh Delete
SqlCommand CreateDeleteCommand()
{
string strSQL;
strSQL =
"Delete from tênBang " +
"

where @cot1=giatri1 and … and @cotN=giatriN";

SqlCommand cmd = new SqlCommand(strSQL, conn);

SqlParameterCollection pc = cmd.Parameters;

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


return cmd;
}

17


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ố
int SubmitInsert/Update/Delete()
{
SqlCommand cmd = CreateInsertCommand();
//SqlCommand cmd = CreateUpdateCommand();
//SqlCommand cmd = CreateDeleteCommand();

cmd.Parameters[@tenThamSo] = giatri;


return cmd.ExecuteNonQuery();
}

18


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

19


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
• DataRowState.Added
• DataRowState.Deleted
• DataRowState.Detached
• DataRowState.Modified
• DataRowState.Unchanged

20


Chỉnh sửa dữ liệu Disconnected
Thêm các dịng dữ liệu mới

• Cách 1:


DataRow row;
row = tenBang.NewRow();
row["cot1"] = giatri1;
row["cot2"] = giatri2;

tenBang.Rows.Add(row);

• Cách 2:
object[] rowValues = {giatri1,giatri2,…};
tenBang.LoadDataRow(rowValues, false);

21


Chỉnh sửa dữ liệu Disconnected
Chỉnh sửa các dịng dữ liệu

• Cách 1:

DataRow row;
int index;

row = tenBang.Rows[index];
row["cot1"] = giatrimoi1;
row["cot2"] = giatrimoi2;


• Cách 2:

DataRow row;

int index;

row = tenBang.Rows[index];
row.BeginEdit();
row["cot1"] = giatrimoi1;
row["cot2"] = giatrimoi2;

row.EndEdit();
22


Chỉnh sửa dữ liệu Disconnected
Chỉnh sửa các dịng dữ liệu

• Cách 3:
DataRow row;
int index;

row = tenBang.Rows[index];
row.ItemArray = new object[]{giatri1, giatri2, … };

23


Chỉnh sửa dữ liệu Disconnected
Xóa các dịng dữ liệu

• Cách 1:

DataRow row;

int index;

row = tenBang.Rows[index];
row.Delete();

• Cách 2:

DataRow row;
int index;

row = tenBang.Rows[index];
tenBang.Remove(row);

24


Chỉnh sửa dữ liệu Disconnected
Xóa các dịng dữ liệu

• Cách 3:
DataRow row;
int index;

tenBang.RemoveAt(index);

25


×