Danh mục

Tìm hiểu C# và ứng dụng của C# p 25

Số trang: 12      Loại file: pdf      Dung lượng: 297.24 KB      Lượt xem: 6      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Chương 14 Truy cập dữ liệu với ADO.NET ( Tiếp theo)14.9 Thay đổi các bản ghi của cơ sở dữ liệuTới lúc này, chúng ta đã học cách lấy dữ liệu từ cơ sở dữ liệu sau đó hiển thị chúng ra màn hình dựa vào các điều khiển có hay không kết buộc dữ liệu. Phần này chúng ta sẽ tìm hiểu cách cập nhật vào cơ sở dữ liệu. Các thao tác trên cơ sở dữ liệu như : Thêm, xóa và sửa một dòng trong các bảng dữ liệu. Sau đây là luồng công việc hoàn chỉnh...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 25Truy cập dữ liệu với ADO.NET Gvhd: Nguyễn Tấn Trần Minh Khang14.9 Thay đổi các bản ghi của cơ sở dữ liệuTới lúc này, chúng ta đã học cách lấy dữ liệu từ cơ sở dữ liệu sau đó hiển thị chúngra màn hình dựa vào các điều khiển có hay không kết buộc dữ liệu. Phần này chúngta sẽ tìm hiểu cách cập nhật vào cơ sở dữ liệu. Các thao tác trên cơ sở dữ liệu như :Thêm, xóa và sửa một dòng trong các bảng dữ liệu. Sau đây là luồng công việchoàn chỉnh khi ta có một thao tác cập nhật cơ sở dữ liệu : 1. Đẩy dữ liệu của bảng vào DataSet bằng câu truy vấn SQL hay gọi thủ tục từ cơ sở dữ liệu 2. Hiển thị dữ liệu trong các bảng có trong DataSet bằng cách kết buộc hay duyệt qua các dòng dữ liệu. 3. Hiệu chỉnh dữ liệu trong các bảng DataTable với các thao tác thêm, xóa hay sửa trên dòng DataRow. 4. Gọi phương thúc GetChanges() để lấy về một DataSet khác chứa tất cả các thay đổi trên dữ liệu. 5. Kiểm tra lỗi trên DataSet mới được tạo này bằng thuộc tính HasErrors. Nếu có lỗi thì ta sẽ tiến hành kiểm tra trên từng bảng DataTable của DataSet, khi gặp một bảng có lỗi thì ta tiếp tục dùng hàm GetErrors()để lấy về các dòng DataRow có lỗi, ứng với từng dòng ta sẽ dùng thuộc tính RowError trên dòng để xác định xem dòng đó có lỗi hay không để có thể đưa ra xử lý thích hợp. 6. Trộn hai DataSet lại thành một. 7. Gọi phương thức Update() của đối tượng DataAdapter với đối số truyền vào là DataSet vừa có trong thao tác trộn ở trên để cập nhật các thay đổi vào cơ sở dữ liệu. 161Truy cập dữ liệu với ADO.NET Gvhd: Nguyễn Tấn Trần Minh Khang 8. Gọi phương thức AcceptChanges() của DataSet để cập nhật các thay đổi vào DataSet này hay phương thức RejectChanges() nếu từ chối cập nhật thay đổi cho DataSet hiện hành.Với luồng công việc trên, cho phép ta có thể kiểm soát tốt được việc thay đổi trêncơ sở dữ liệu hay việc gỡ lỗi cũng thuận tiện hơn. Trong ví dụ dưới đây , ta sẽ chohiện thị dữ liệu trong bảng Customers lên một ListBox, sau đó ta tiến hành các thaotác thêm, xóa hay sửa trên cơ sở dữ liệu. Để dễ hiểu, ta giảm bớt một số thao tácquản lý ngoại lệ hay lỗi, chỉ tập trung vào mục đích chính của ta. Giao diện chínhcủa ứng dụng sau khi hoàn chỉnh :Hình 14-8 Hiệu chỉnh dữ liệu trên bảng Customers.Trong Form này, ta có một ListBox lbCustomers liệt kê các khách hàng, một ButtonbtnUpdate cho việc cập nhật dữ liệu, một Button Xóa, ứng với nút thêm mới ta cótám hộp thoại TextBox để nhận dữ liệu gõ vào từ người dùng. Đồng thời ta có thêmmột lblMessage để hiển thị các thông báo ứng với các thao tác trên.14.9.1 Truy cập và hiển thị dữ liệuTa sẽ tạo ra ba biến thành viên : DataAdapter, DataSet và Command : private SqlDataAdapter DataAdapter; private DataSet DataSet; private DataTable dataTable;Việc khai báo các biến thành viên như vậy sẽ giúp ta có thể dùng lại cho cácphương thức khác nhau. T khai báo chuỗi kết nối và truy vấn : string connectionString = server=localhost; uid=sa; pwd=; database=northwind; string commandString = Select * from Customers;Các chuỗi được dùng làm đối số để tạo đối tượng DataAdapter : DataAdapter=new SqlDataAdapter(commandString,ConnectionString); 162Truy cập dữ liệu với ADO.NET Gvhd: Nguyễn Tấn Trần Minh KhangTạo ra đối tượng DataSet mới, sau đó đẩy dữ liệu từ DataAdapter vào cho nó: DataSet = new DataSet(); DataAdapter.Fill(DataSet,Customers);Để hiển thị dữ liệu, ta sẽ gọi hàm PopulateDB()để đẩy dữ liệu vào ListBox: dataTable = DataSet.Tables[0]; lbCustomers.Items.Clear( ); foreach (DataRow dataRow in dataTable.Rows) { lbCustomers.Items.Add(dataRow[CompanyName] + ( + dataRow[ContactName] + ) ); }14.9.2 Cập nhật một dòng dữ liệuKhi người dùng nhấn Button Update (cập nhật), ta sẽ lấy chỉ mục được chọn trênListBox, và lấy ra dòng dữ liệu DataRow trong bảng ứng với chỉ mục trên. Sau đócập nhật DataSet với dòng dữ liệu mới này nếu sau khi kiểm tra thấy chúng khôngcó lỗi nào cả. Chi tiết về quá trình thực hiện cập nhật :Đầu tiên ta sẽ lấy về dòng dữ liệu người dùng muốn thay đổi từ đối tượng dataTablemà ta đã khai báo làm biến thành viên ngay từ đầu : DataRow targetRow = dataTable.Rows[lbCustomers.SelectedIndex];Hiển thị chuỗi thông báo cập nhật dòng dữ liệu đó cho người dùng biết. Để làm điềunày ta sẽ gọi phương thức tình DoEvents() của đối tượng Application, hàm này sẽgiúp sơn mới lại màn hình với thông điệp hay các thay đổi khác. lblMessage.Text = Updating + targetRow[CompanyName]; Application.DoEvents();Gọi hàm BeginEdit() của đối tượng DataRow, để chuyển dòng dữ liệu sang chế độhiệu chỉnh ( Edit ) và EndEdit()để kết thúc chế độ hiệu chỉnh dòng. targetRow.BeginEdit(); targetRow[CompanyName] = txtCustomerName.Text; targetRow.EndEdit() ...

Tài liệu được xem nhiều: