Chương 5 CÁC ĐỐI TƯỢNG TRUY XUẤT DỮ LIỆU
5.1.4 Thực hiện nhiều câu lệnh SQL
Điển hình, chương trình C# và cơ sở dữ liệu của bạn sẽ chạy trên những máy tính khác nhau và truyền thông qua một mạng. Mỗi lần bạn thực hiện một lệnh trong chương trình của bạn, nó phải hành trình qua mạng tới cơ sở dữ liệu và được thực hiện bởi cơ sở dữ liệu, và bất kỳ kết quả nào phải được gửi trả lại ngang qua mạng đến chương trình của bạn. Đó là sự quá tải giao thông mạng! Một cách tiềm tàng để giảm bớt giao thông mạng là thực hiện nhiều câu lệnh SQL tại cùng một thời điểm.
Trong mục này, bạn sẽ thấy cách để thực thi nhiều phát biểu SELECT và truy xuất kết quả, và bạn sẽ thấy cách thực hiện nhiều phát biểu SELECT, INSERT, UPDATE , và DELETE như thế nào, và sự đặt xen kẽ các lệnh ra sao.
THỰC THI NHIỀU PHÁT BIỂU SELECT:
Chúng ta hãy xem xét cách thực hiện nhiều phát biểu SELECT và truy xuất những kết quả như thế nào .
Mã sau đây đầu tiên tạo ra một đối tượng SqlCommand có tên mySqlCommand và gán thuộc tính CommandText tới ba phát biểu SELECT khác nhau :
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText =
"SELECT TOP 5 ProductID, ProductName " +
"FROM Products " +
"ORDER BY ProductID;" +
"SELECT TOP 3 CustomerID, CompanyName " +
"FROM Customers " +
"ORDER BY CustomerID;" +
"SELECT TOP 6 OrderID, CustomerID " +
"FROM Orders " +
"ORDER BY OrderID;";
Chú ý tất cả những phát biểu SELECT được tách ra bởi những dấu chấm phẩy.
THỰC THI NHIỀU PHÁT BIỂU SELECT, INSERT, UPDATE, VÀ DELETE:
Bạn có thể đặt xen nhiều phát biểu SELECT, INSERT, UPDATE, và DELETE. Điều này có thể giảm thiểu giao thông mạng bởi vì bạn đã gửi nhiều câu lệnh SQL tới cơ sở dữ liệu vào một chuyến đi. Mã sau đây đầu tiên tạo ra một đối tượng SqlCommand có tên mySqlCommand và gán thuộc tính CommandText là tập hợp nhiều câu lệnh SQL được đặt xen:
mySqlCommand.CommandText =
"INSERT INTO Customers (CustomerID, CompanyName) "+
"VALUES ('J5COM', 'Jason 5 Company');" +
"SELECT CustomerID, CompanyName " +
"FROM Customers " +
"WHERE CustomerID = 'J5COM';" +
"UPDATE Customers " +
"SET CompanyName = 'Another Jason Company' " +
"WHERE CustomerID = 'J5COM';" +
"SELECT CustomerID, CompanyName " +
"FROM Customers " +
"WHERE CustomerID = 'J5COM';" +
"DELETE FROM Customers " +
"WHERE CustomerID = 'J5COM';";
Những câu lệnh SQL như sau :
■ Phát biểu INSERT thêm một hàng mới vào bảng khách hàng.
■ Phát biểu SELECT đầu tiên truy xuất hàng mới.
■ Phát biểu UPDATE sửa đổi cột CompanyName của hàng.
■ Phát biểu SELECT thứ hai truy xuất hàng lần nữa.
■ Phát biểu DELETE loại bỏ hàng.
5.1.5 Sử dụng đối tượng SqlDataReader trong Visual Studio.Net
Không thể tạo ra một đối tượng DataReader trực quan trong Visual Studio .NET (VS .NET);
chúng ta chỉ có thể tạo ra chúng sử dụng những lệnh chương trình.
Trong mục này, bạn sẽ thấy cách tạo ra một đối tượng SqlDataReader và sử dụng nó để truy xuất tập hợp kết quả từ một đối tượng SqlCommand như thế nào, và bạn đã thấy cách tạo ra sử dụng VS .NET trong chương trước đây. Đối tượng SqlCommand chứa một phát biểu SELECT truy xuất những cột CustomerID, CompanyName, Và ContactName từ bảng khách hàng. Bạn sẽ hiểu cách để thực hiện phát biểu SELECT , đọc tập hợp kết quả sử dụng đối tượng SqlDataReader, và hiển thị tập hợp kết quả trong một điều khiển ListView như thế nào. Một điều khiển ListView cho phép bạn xem thông tin được đặt trong một lưới.
Ghi chú
Có thể sửa đổi dự án MyDataReader Bạn đã tạo ra Trong chương trước đây, hay nếu bạn không muốn đi theo những chỉ dẫn trong mục này, bạn có thể đơn giản mở dự án hoàn chỉnh VS .NET chứa trong thư mục DataReader. Để mở dự án được bổ sung, lựa chọn File Open
Project, duyệt tới VS .NET Project \ thư mục DataReader, và mở File WindowsApplication4.csproj .
Nếu đang sửa đổi ứng dụng Windows hiện có của bạn, kéo một điều khiển ListView vào Form của bạn. Hình 5.1 cho thấy một Form với một điều khiển ListView. Chắc chắn rằng thuộc tính "Name" của ListView của bạn được gán tên là listView1 (đây là Tên mặc định, vì vậy bạn không nên thay đổi nó).
Hình 5.1: thêm một điều khiển ListView vào Form
Tiếp theo, nhấn đúp một vùng trên form của bạn bên ngoài điều khiển ListView. thao tác này làm VS .NET hiển thị cửa sổ biên tập mã , và bạn sẽ nhìn thấy con trỏ định vị trong phương thức Form1_Load() ; phương thức này được gọi khi form của bạn được tải ở giai đọan thoạt tiên . Điển hình, đây là phương thức mà từ đó bạn muốn thực hiện những thao tác với cơ sở dữ liệu của bạn. thiết đặt phương thức Form1_Load() của bạn với mã sau đây:
private void Form1_Load(object sender, System.EventArgs e) {
sqlConnection1.Open();
System.Data.SqlClient.SqlDataReader mySqlDataReader = sqlCommand1.ExecuteReader();
while (mySqlDataReader.Read()) {
listView1.Items.Add(mySqlDataReader["CustomerID"].ToString());
listView1.Items.Add(mySqlDataReader["CompanyName"].ToString());
listView1.Items.Add(mySqlDataReader["ContactName"].ToString());
}
mySqlDataReader.Close();
sqlConnection1.Close();
}