Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 370 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
370
Dung lượng
9,94 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐÀ LẠT KHOA CÔNG NGHỆ THÔNG TIN NGUYỄN MINH HIỆP NGUYỄN VĂN PHÚC Đà Lạt, tháng 06 năm 2009 (Lưu hành nội bộ) LỜI MỞ ĐẦU Cùng với sự phát triển nhanh chóng của khoa học - kỹ thuật trong những thập niên gần đây, các ứng dụng công nghệ thông tin cũng trở nên phong phú, đa dạng và đóng vai trò không thể thiếu trong sự phát triển chung của nền kinh tế. Những chương trình ứng dụng, những phần mềm quản lý được thay thế cho việc quản lý bằng hồ sơ, sổ sách đã quá lạc hậu, tốn chi phí và thời gian. Hơn thế nữa, tác động của nó còn len lỏi vào tất cả các lĩnh vực nghiên cứu và đời sống. Từ những website tin tức đến website thương mại, thanh toán điện tử, từ các mô hình thí nghiệm ảo trên máy tính, những chương trình quản lý hoạt động của cả một hệ thống điều khiển tự động đến chính phủ điện tử, tất cả đều là thành tựu vượt bậc của công nghệ thông tin. Đặc biệt, với sự phát triển không ngừng đó, các ứng dụng mới ngày càng đòi hỏi những tính năng ưu việt hơn. Không những về tính linh hoạt, thời gian xử lý mà còn phải kể đến khả năng lưu trữ lượng dữ liệu cực kỳ lớn cùng với tốc độ tìm kiếm, thực thi lệnh nhanh chóng và hiệu quả. Để đáp ứng điều này, ngoài việc sử dụng hệ quản trị cơ sở dữ liệu phù hợp, chúng ta cũng cần phải có các công cụ, môi trường tốt để phát triển ứng dụng. Quan trọng hơn, cần phải biết cách tổ chức chương trình một cách khoa học và tinh tế nhằm cải thiện hiệu suất và nâng cao chất lượng của phần mềm ứng dụng. Được sự động viên và đóng góp ý kiến của các bạn đồng nghiệp trong khoa Công nghệ Thông tin, chúng tôi biên dịch và giới thiệu “Giáo trình lập trình cơ sở dữ liệu” này tới các bạn sinh viên như một công cụ để phát triển cho mình những kỹ năng cần thiết trong việc xây dựng các phần mềm ứng dụng. Lượng kiến thức là vô hạn, vì thế, trong giáo trình này, chúng tôi không thể đề cập được hết những khía cạnh của việc phát triển phần mềm. Thay vào đó, chúng tôi hi vọng, đây sẽ là tài liệu tham khảo tương đối đầy đủ về lập trình ứng dụng với cơ sở dữ liệu để quý bạn đọc tự khám phá và phát huy những kỹ năng tiềm ẩn của mình. Giáo trình được chia làm 10 chương với nội dung như sau: Chương 1 giới thiệu tổng quan và trình bày một số khái niệm liên quan về cơ sở dữ liệu. Ngoài ra, chương này cũng hướng dẫn cách sử dụng các công cụ để quản lý, tạo các lệnh SQL và truy xuất đến một cơ sở dữ liệu SQL Server. Chương 2 trình bày tổng quan về ADO.Net, các lớp của ADO.Net và minh họa một tính năng mạnh mẽ của ADO.Net là khả năng lưu trữ, xử lý các dòng lấy từ cơ sở dữ liệu sau khi đã ngắt kết nối. Chương 3 hướng dẫn chi tiết cách thiết lập một kết nối đến cơ sở dữ liệu. Mọi thao tác xử lý có liên quan đến cơ sở dữ liệu phải thông qua một phương tiện liên lạc – được gọi là đối tượng kết nối (Connection). Chương 4 đi sâu phân tích các bước để thực thi các lệnh truy vấn cơ sở dữ liệu như SELECT, INSERT, UPDATE và DELETE thông qua đối tượng Command. Ngoài ra, bạn cũng sẽ được học cách dùng đối tượng Command để gọi một thủ tục, thực thi thủ tục theo các tham số và lấy về các dòng, các cột trong một bảng hay một khung nhìn cụ thể. Chương 5 được dành trọn để giới thiệu về các lớp DataReader. Đây là một trong những đối tượng thuộc nhóm lớp kết nối được dùng để đọc dữ liệu trả về từ cơ sở dữ liệu thông qua đối tượng Command. Chương 6 trình bày chi tiết cách sử dụng đối tượng DataSet – trong nhóm lớp không kết nối – để lưu trữ dữ liệu nhận được từ cơ sở dữ liệu. DataSet cho phép lưu trữ một bản sao các dòng của các bảng lấy được cơ sở dữ liệu. Bạn có thể làm việc với dữ liệu trong DataSet ngay cả khi kết nối đã bị ngắt. Chương 7 đi sâu tìm hiểu các tính năng cao cấp của DataSet để cập nhật các dòng trong DataSet sau đó đồng bộ các thay đổi với cơ sở dữ liệu thông qua đối tượng trung gian DataAdapter. Chương 8 hướng dẫn cho bạn cách sử dụng đối tượng DataView để trích lọc và sắp xếp dữ liệu theo những tiêu chí cụ thể. Ưu điểm chính của DataView là khả năng chuyển tải dữ liệu lên các điều khiển trong ứng dụng Windows Form hoặc ASP.Net. Chương 9 giới thiệu cách sử dụng các đối tượng ràng buộc (Constraint) và quan hệ (Relation) để điều hướng và xử lý dữ liệu trong các bảng có quan hệ với nhau. Chương 10 giúp bạn nghiên cứu cách điều khiển các giao dịch nâng cao sử dụng SQL Server và ADO.Net nhằm nâng cao hiệu suất của sản phẩm phần mềm. Chúng tôi hi vọng giáo trình này sẽ là một tài liệu tham khảo có ích đối với bạn đọc. Chúng tôi cũng rất mong nhận được sự cổ vũ và những ý kiến đóng góp quý báu của các bạn. Cuối cùng, chúng tôi xin gửi lời cảm ơn đến các thầy cô và các bạn đồng nghiệp đã ủng hộ và giúp đỡ chúng tôi hoàn thành giáo trình này. Đà Lạt, tháng 06 năm 2009 Nguyễn Minh Hiệp Nguyễn Văn Phúc Giáo trình lập trình cơ sở dữ liệu Trang 4 MỤC LỤC LỜI MỞ ĐẦU 2 MỤC LỤC 4 1. CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 11 1.1. Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu 11 1.2. Một số khái niệm 12 1.2.1. Khóa chính – Primary Keys 13 1.2.2. Quan hệ và khóa ngoại – Table Relationships and Foreign Keys 13 1.2.3. Giá trị null – Null Values 14 1.2.4. Chỉ mục - Indexes 15 1.2.5. Kiểu dữ liệu – Column Types 16 1.3. Ngôn ngữ truy vấn có cấu trúc (SQL) 17 1.3.1. Các lệnh DML (Data Manipulating Language) 17 1.3.1.1. Lấy các dòng từ một hay nhiều bảng 18 1.3.1.2. Bổ sung dữ liệu 25 1.3.1.3. Cập nhật dữ liệu 26 1.3.1.4. Xóa dữ liệu khỏi một bảng 26 1.3.2. Duy trì tính toàn vẹn của cơ sở dữ liệu 27 1.3.3. Gom nhóm các lệnh SQL 28 1.3.4. Các lệnh định nghĩa dữ liệu - DDL 30 1.3.4.1. Tạo, thay đổi và xóa một bảng 30 1.3.4.2. Tạo và xóa chỉ mục (Index) 31 1.3.4.3. Khung nhìn - View 32 1.3.5. Thủ tục, hàm và trigger 33 1.3.5.1. Thủ tục lưu trữ (Stored Procedure) 33 1.3.5.2. Hàm - Function 35 1.3.5.3. Trigger 38 1.4. Giao dịch SQL – Transaction SQL 41 1.4.1. Mô hình giao dịch trong SQL 42 1.4.2. Giao dịch lồng nhau 44 1.5. Cơ sở dữ liệu Northwind 46 1.5.1. Bảng Customers 47 1.5.2. Bảng Orders 48 1.5.3. Bảng Order Details 49 1.5.4. Bảng Products 49 1.6. Sử dụng Microsoft SQL Server 50 1.6.1. Sử dụng Enterprise Manager 51 1.6.1.1. Xây dựng các lệnh truy vấn dùng Enterprise Manager 59 1.6.1.2. Tạo bảng dữ liệu 62 1.6.1.3. Thiết lập quyền 64 1.6.1.4. Tạo quan hệ giữa các bảng 65 1.6.1.5. Tạo chỉ mục 66 Giáo trình lập trình cơ sở dữ liệu Trang 5 1.6.1.6. Tạo một ràng buộc (constraint) 68 1.6.2. Query Analyzer 69 1.6.2.1. Kết nối tới SQL Server 69 1.6.2.2. Tạo và thực thi một lệnh truy vấn SQL 70 1.6.2.3. Lưu và mở lại một lệnh SQL 71 1.7. Kết chương 71 2. CHƯƠNG 2: TỔNG QUAN VỀ ADO.NET 73 2.1. Các lớp kết nối và không kết nối 73 2.2. Các lớp kết nối – The managed provider classes 74 2.2.1. Lớp Connection 75 2.2.2. Lớp Command 75 2.2.3. Lớp Parameter 75 2.2.4. Lớp ParameterCollection 75 2.2.5. Lớp đọc dữ liệu tuần tự - DataReader 76 2.2.6. Các lớp điều phối dữ liệu - DataAdapter 76 2.2.7. Các lớp tạo lệnh truy vấn - CommandBuilder 76 2.2.8. Các lớp giao dịch - Transaction 76 2.2.9. Namespace chứa các lớp kết nối 76 2.3. Các lớp không kết nối – Generic Data Classes 77 2.3.1. Lớp DataSet 77 2.3.2. Lớp DataTable 77 2.3.3. Lớp DataRow 77 2.3.4. Lớp DataColumn 78 2.3.5. Lớp ràng buộc - Constraint 78 2.3.5.1. Lớp UniqueConstraint 79 2.3.5.2. Lớp ForeignKeyConstraint 79 2.3.6. Lớp DataView 79 2.3.7. Lớp quan hệ - DataRelation 79 2.3.8. Namespace chứa các lớp không kết nối 79 2.4. Sử dụng ADO.Net để thực thi một truy vấn SQL 79 2.4.1. Các bước thực hiện một truy vấn trong ADO.Net 80 2.4.2. Chi tiết thực hiện truy vấn bởi ADO.Net 80 2.5. Kết hợp Windows Form với ADO.Net 86 2.6. Kết chương 93 3. CHƯƠNG 3: KẾT NỐI CƠ SỞ DỮ LIỆU 95 3.1. Lớp SqlConnection 95 3.2. Kết nối cơ sở dữ liệu SQL Server bởi SqlConnection 96 3.3. Kết nối tới cơ sở dữ liệu Access và Oracle 98 3.3.1. Kết nối cơ sở dữ liệu Access 98 3.3.2. Kết nối cơ sở dữ liệu Oracle 100 3.4. Mở và đóng kết nối 100 3.5. Tổ hợp kết nối – Connection Pooling 102 Giáo trình lập trình cơ sở dữ liệu Trang 6 3.6. Quản lý trạng thái kết nối 105 3.7. Quản lý sự kiện trong quá trình kết nối 105 3.7.1. Sự kiện StateChange 105 3.7.2. Sự kiện InfoMessage 107 3.8. Tạo đối tượng kết nối dùng Visual Studio .NET 109 3.9. Tạo trình xử lý sự kiện bằng Visual Studio .Net 112 3.10. Kết chương 114 4. CHƯƠNG 4: THỰC THI LỆNH TRUY VẤN CƠ SỞ DỮ LIỆU 116 4.1. Lớp SqlCommand 116 4.2. Tạo đối tượng SqlCommand 118 4.2.1. Tạo đối tượng SqlCommand dùng phương thức khởi tạo 118 4.2.2. Tạo đối tượng SqlCommand bằng phương trức CreateCommand 119 4.3. Thực thi các lệnh SELECT và TableDirect 119 4.3.1. Phương thức ExecuteReader 120 4.3.2. Điều khiển cách xử lý (Command Behavior) của phương thức ExecuteReader 123 4.3.2.1. Sử dụng CommandBehavior.SingleRow 123 4.3.2.2. Sử dụng CommandBehavior.SchemaOnly 125 4.3.3. Thực thi lệnh TableDirect bởi phương thức ExecuteReader 130 4.3.4. Thực thi lệnh SELECT dùng phương thức ExecuteScalar 132 4.3.5. Lấy dữ liệu XML dùng phương thức ExecuteXMLReader 133 4.4. Thực thi các lệnh làm thay đổi thông tin trong cơ sở dữ liệu 136 4.4.1. Thực thi các lệnh INSERT, UPDATE và DELETE 136 4.4.1.1. Thêm dòng mới bằng lệnh INSERT 136 4.4.1.2. Cập nhật dữ liệu bằng lệnh UPDATE 137 4.4.1.3. Xóa dữ liệu bằng lệnh DELETE 137 4.4.2. Thực thi lệnh DDL dùng phương thức ExecuteNonQuery 139 4.5. Các giao dịch trong cơ sở dữ liệu 142 4.6. Truyền tham số vào các lệnh 144 4.7. Gọi các thủ tục SQL Server 149 4.7.1. Thực thi một Stored Procedure không trả về dữ liệu 149 4.7.2. Lấy dữ liệu trả về từ tham số dùng từ khóa OUTPUT 150 4.7.3. Lấy dữ liệu trả về bởi lệnh RETURN 154 4.7.4. Thực thi một Stored Procedure có trả về tập dữ liệu 156 4.8. Tạo đối tượng Command bằng Visual Studio .Net 160 4.9. Kết chương 162 5. CHƯƠNG 5: LỚP DATAREADER 164 5.1. Lớp SqlDataReader 164 5.2. Tạo đối tượng SqlDataReader 166 5.3. Đọc dữ liệu từ SqlDataReader 167 5.4. Lấy giá trị từ các cột với kiểu cụ thể 170 5.5. Sử dụng các phương thức dạng Get* để đọc dữ liệu 171 Giáo trình lập trình cơ sở dữ liệu Trang 7 5.5.1. Lấy kiểu dữ liệu của một cột 174 5.5.2. Đọc dữ liệu bằng phương thức GetSql* 177 5.6. Xử lý giá trị null 182 5.7. Thực thi nhiều lệnh truy vấn SQL 183 5.7.1. Thực thi nhiều lệnh SELECT 183 5.7.2. Thực thi nhiều lệnh SELECT, INSERT, UPDATE và DELETE 186 5.8. Sử dụng DataReader trong Visual Studio .NET 188 5.9. Kết chương 192 6. CHƯƠNG 6: LƯU TRỮ DỮ LIỆU VỚI DATASET 193 6.1. Lớp SqlDataAdapter 193 6.2. Tạo đối tượng SqlDataAdapter 196 6.3. Lớp DataSet 197 6.4. Tạo một đối tượng DataSet 200 6.4.1. Đưa dữ liệu vào DataSet 201 6.4.2. Đưa dữ liệu vào nhiều DataTable của một DataSet 209 6.5. Trộn các DataRow, DataTable và DataSet vào một DataSet khác 216 6.6. Ánh xạ các bảng và các cột 219 6.7. DataSet có định kiểu – Strongly Typed DataSet 223 6.7.1. Tạo đối tượng DataSet có định kiểu 223 6.7.2. Sử dụng DataSet có định kiểu 224 6.8. Tạo đối tượng DataAdapter bằng Visual Studio .Net 227 6.9. Tạo đối tượng DataSet bằng Visual Studio .Net 232 6.10. Kết chương 234 7. CHƯƠNG 7: CẬP NHẬT DỮ LIỆU DÙNG DATASET 236 7.1. Lớp DataTable 236 7.2. Lớp DataRow 238 7.3. Lớp DataColumn 239 7.4. Tạo các ràng buộc cho DataTable và DataColumn 240 7.4.1. Tạo các ràng buộc bằng cách viết mã 241 7.4.2. Tạo ràng buộc cho các DataTable 242 7.4.3. Tạo ràng buộc cho DataColumn 246 7.4.4. Tạo ràng buộc bởi phương thức FillSchema của DataAdapter 251 7.5. Tìm kiếm, trích lọc và sắp xếp các dòng trong DataTable 256 7.5.1. Tìm kiếm một DataRow từ DataTable 256 7.5.2. Trích lọc các DataRow từ DataTable 257 7.6. Cập nhật dữ liệu trên các dòng của DataTable 261 7.6.1. Cấu hình DataAdapter để cập nhật thay đổi vào cơ sở dữ liệu 262 7.6.2. Thiết lập thuộc tính InsertCommand 262 7.6.3. Thiết lập thuộc tính UpdateCommand 262 7.6.4. Thiết lập thuộc tính DeleteCommand 264 7.6.5. Thêm một DataRow vào DataTable 265 7.6.6. Cập nhật một DataRow trong DataTable 267 Giáo trình lập trình cơ sở dữ liệu Trang 8 7.6.7. Xóa một DataRow ra khỏi DataTable 269 7.7. Lấy giá trị mới của các cột định danh 270 7.8. Cập nhật dữ liệu dùng Stored Procedure 272 7.8.1. Sử dụng SET NOCOUNT ON trong Stored Procedure 274 7.8.2. Gọi Stored Procedure từ đối tượng DataAdapter 275 7.8.3. Thêm một DataRow vào DataTable 277 7.8.4. Cập nhật dữ liệu trên một DataRow của DataTable 277 7.8.5. Xóa một DataRow khỏi DataTable 278 7.9. Tự động phát sinh truy vấn SQL 279 7.10. Các sự kiện của DataAdapter 280 7.10.1. Sự kiện FillError 280 7.10.2. Sự kiện RowUpdating 281 7.10.3. Sự kiện RowUpdated 283 7.11. Các sự kiện của DataTable 283 7.11.1. Sự kiện ColumnChanging và ColumnChanged 284 7.11.2. Sự kiện RowChanging và RowChanged 285 7.11.3. Sự kiện RowDeleting và RowDeleted 286 7.12. Xử lý lỗi cập nhật 286 7.12.1. Kiểm tra lỗi 287 7.12.2. Sửa lỗi 288 7.13. Sử dụng các giao dịch với DataSet 288 7.13.1. Sử dụng thuộc tính Transaction của các DataAdapter Command 289 7.13.2. Cập nhật dữ liệu trong DataSet có định kiểu 289 7.14. Kết chương 291 8. CHƯƠNG 8: TRÍCH LỌC VÀ SẮP XẾP VỚI DATAVIEW 293 8.1. Lớp DataView 293 8.2. Tạo và sử dụng đối tượng DataView 295 8.3. Sử dụng thuật toán sắp xếp mặc định 298 8.4. Trích lọc nâng cao 299 8.5. Lớp DataRowView 299 8.5.1. Tìm kiếm các DataRowView trong DataView 300 8.5.2. Tìm chỉ số của một DataRowView dùng phương thức Find 300 8.5.3. Tìm các đối tượng DataRowView bằng phương thức FindRows 301 8.5.4. Thêm, cập nhật và xóa các DataRowView từ DataView 303 8.5.4.1. Thêm một DataRowView vào DataView 303 8.5.4.2. Cập nhật một DataRowView đang tồn tại 304 8.5.4.3. Xóa một DataRowView đang tồn tại 304 8.5.5. Tạo đối tượng DataView con 308 8.6. Lớp DataViewManager 310 8.7. Tạo và sử dụng đối tượng DataViewManager 311 8.8. Tạo đối tượng DataView dùng Visual Studio .Net 313 8.9. Kết chương 315 Giáo trình lập trình cơ sở dữ liệu Trang 9 9. CHƯƠNG 9: QUAN HỆ VÀ RÀNG BUỘC 316 9.1. Lớp UniqueConstraint 316 9.2. Tạo đối tượng UniqueConstraint 317 9.3. Lớp ForeignKeyConstraint 319 9.4. Tạo đối tượng ForeignKeyConstraint 320 9.5. Lớp DataRelation 322 9.6. Tạo và sử dụng đối tượng DataRelation 322 9.6.1. Tạo đối tượng DataRelation 323 9.6.2. Khảo sát các ràng buộc tạo bởi DataRelation 325 9.7. Quản lý đối tượng DataRow trong các DataTable cha và con 326 9.7.1. Phương thức GetChildRow 327 9.7.2. Phương thức GetParentRow 327 9.8. Thêm, cập nhật và xóa các dòng có quan hệ với nhau 328 9.8.1. Thêm các đối tượng DataRow 333 9.8.2. Cập nhật và xóa đối tượng DataRow 333 9.8.3. Cập nhật các thay đổi vào cơ sở dữ liệu 334 9.9. Các vấn đề liên quan đến việc cập nhật khóa chính 336 9.9.1. Điều khiển việc cập nhật và xóa dùng SQL Server 336 9.9.2. Quản lý việc cập nhật và xóa dùng các thuộc tính UpdateRule và DeleteRule của đối tượng ForeignKeyConstraint 338 9.9.3. Cập nhật giá trị khóa chính của bảng cha 339 9.9.3.1. Trường hợp thứ nhất 340 9.9.3.2. Trường hợp thứ 2 341 9.9.3.3. Trường hợp thứ 3 341 9.9.3.4. Kết luận 341 9.10. Kết chương 342 10. CHƯƠNG 10: KIỂM SOÁT GIAO DỊCH NÂNG CAO 343 10.1. Lớp SqlTransaction 343 10.2. Thiết lập điểm lưu (savepoint) 344 10.2.1. Thiết lập điểm lưu dùng T-SQL 344 10.2.2. Tạo điểm lưu bằng đối tượng SqlTransaction 346 10.3. Gán mức độ độc lập của giao dịch 348 10.3.1. Thiết lập mức độ độc lập giao dịch dùng T-SQL 350 10.3.2. Gán mức độ độc lập giao dịch qua đối tượng SqlTransaction 351 10.4. Tìm hiểu về các chế độ khóa của SQL Server 356 10.4.1. Các loại khóa trong SQL Server 356 10.4.2. Các chế độ khóa 356 10.4.3. Xem thông tin các khóa của SQL Server 357 10.5. Chặn giao dịch – Transaction Blocking 359 10.6. Đặt thời gian TimeOut cho khóa 360 10.7. Chặn và đọc các giao dịch Serializable / Repeatable 360 10.8. Deadlocks 364 10.9. Kết chương 369 Giáo trình lập trình cơ sở dữ liệu Trang 10 TÀI LIỆU THAM KHẢO 370 [...]... từ khoá BEGIN END hoặc có thể không Ví dụ: Tạo thủ tục để thêm một sản phẩm vào bảng Products trong cơ sở dữ liệu Northwind, sau đó lấy về mã của sản phẩm CREATE PROCEDURE AddProduct @MyProductName nvarchar(40), @MySupplierID int, @MyCategoryID int, @MyQuantityPerUnit nvarchar(20), @MyUnitPrice money, @MyUnitsInStock smallint, @MyUnitsOnOrder smallint, @MyReorderLevel smallint, @MyDiscontinued bit AS... @ProductID int insert a row into the Products table Trang 34 Giáo trình lập trình cơ sở dữ liệu INSERT INTO Products ( ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued ) VALUES ( @MyProductName, @MySupplierID, @MyCategoryID, @MyQuantityPerUnit, @MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, @MyReorderLevel, @MyDiscontinued ) ... sau chứa hai lệnh INSERT: lệnh đầu tiên thêm một dòng mới vào bảng Customers và lệnh thứ hai thêm một dòng mới vào bảng Orders Cuối cùng, gọi lệnh COMMIT để xác nhận giao dịch BEGIN TRANSACTION; INSERT INTO Customers ( CustomerID, CompanyName ) VALUES ( 'SOCOM', 'Steve Orange Company' ); INSERT INTO Orders ( CustomerID ) VALUES ( 'SOCOM' ); COMMIT; Giao dịch tiếp theo chứa các lệnh INSERT tương tự như... lệnh COMMIT khi @@ERROR = 0 và ngược lại Bạn cũng có thể gán tên cho giao dịch trong lệnh BEGIN TRANSACTION Điều này rất hữu ích khi muốn biết giao dịch nào đang được thực hiện BEGIN TRANSACTION MyTransaction; INSERT INTO Customers ( CustomerID, CompanyName ) VALUES ( 'SYCOM', 'Steve Yellow Company' ); INSERT INTO Orders ( CustomerID ) VALUES ( 'SYCOM' ); Trang 29 Giáo trình lập trình cơ sở dữ liệu IF... 1.1 Một vài mẫu tin trong bảng Products Bạn có thể lưu trữ thông tin trong một cơ sở dữ liệu trên giấy hoặc ở dạng điện từ lưu trong bộ nhớ và hệ thống tập tin của máy tính Hệ thống được dùng để quản lý thông tin trong cơ sở dữ liệu gọi là hệ quản trị cơ sở dữ liệu Trong trường hợp cơ sở dữ liệu điện tử, hệ quản trị cơ sở dữ liệu là phần mểm quản lý thông tin trong bộ nhớ và các tập tin máy tính Một... như trên nhưng bây giờ, thay vì dùng COMMIT, ta dùng ROLLBACK để hủy các thay đổi: BEGIN TRANSACTION; INSERT INTO Customers ( CustomerID, CompanyName ) VALUES ( 'SYCOM', 'Steve Yellow Company' ); INSERT INTO Orders ( CustomerID ) VALUES ( 'SYCOM' ); ROLLBACK; Vì giao dịch bị hủy nên hai dòng được thêm vào bởi các lệnh INSERT cũng bị xóa theo Bạn có thể kiểm tra các lỗi trong giao dịch trước khi quyết... Customers với CustomerID là ALFKI INSERT INTO Customers ( CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax ) VALUES ('ALFKI', 'Jason Price Company', 'Jason Price', 'Owner', '1 Main Street', 'New York', NULL, '12345', 'USA', '(800)-555-1212', NULL ); Nếu tiếp tục thực thi câu lệnh INSERT này, cơ sở dữ liệu phát sinh một thông báo lỗi với nội dung... lỗi với nội dung như sau: Violation of PRIMARY KEY constraint 'PK_Customers' Cannot insert duplicate key in object 'Customers' The statement has been terminated Lệnh này xảy ra lỗi vì đã có một dòng trong bảng Customers chứa giá trị trên cột khóa chính là ALFKI Thông báo này chỉ cho ta biết giá trị được cung cấp cho cột khóa chính trong lệnh INSERT đã tồn tại trong bảng Customers Trong đó, tên ràng... Dòng chứa thông tin cho khách hàng này được tham chiếu bởi các dòng trong bảng Orders Trang 27 Giáo trình lập trình cơ sở dữ liệu UPDATE Customers SET CustomerID = 'ALFKZ' WHERE CustomerID = 'ALFKI'; Nếu thực thi câu lệnh UPDATE này, ta sẽ nhận được thông báo lỗi: UPDATE statement conflicted with COLUMN REFERENCE constraint 'FK_Orders_Customers' The conflict occurred in database 'Northwind', table 'Orders',... Access, MySQL hay Oracle Chẳng hạn, bảng 1.1 sau minh họa chi tiết vài sản phẩm được bán bởi công ty Northwind Bảng này liệt kê mã sản phẩm, tên sản phẩm, số lượng trên đơn vị tính và giá của 10 sản phẩm đầu tiên Thông tin này được lấy từ bảng Products trong cơ sở dữ liệu Northwind PRODUCT ID NAME 1 Chai 2 Chang 3 Aniseed Syrup 4 Chef Anton's Cajun Seasoning QUANTITY PER UNIT Unit Price 10 boxes x 20 . RÀNG BUỘC 316 9.1. Lớp UniqueConstraint 316 9.2. Tạo đối tượng UniqueConstraint 317 9.3. Lớp ForeignKeyConstraint 319 9.4. Tạo đối tượng ForeignKeyConstraint 320 9.5. Lớp DataRelation 322. Thực thi các lệnh làm thay đổi thông tin trong cơ sở dữ liệu 136 4.4.1. Thực thi các lệnh INSERT, UPDATE và DELETE 136 4.4.1.1. Thêm dòng mới bằng lệnh INSERT 136 4.4.1.2. Cập nhật dữ liệu. kiện của DataTable 283 7.11.1. Sự kiện ColumnChanging và ColumnChanged 284 7.11.2. Sự kiện RowChanging và RowChanged 285 7.11.3. Sự kiện RowDeleting và RowDeleted 286 7.12. Xử lý lỗi cập nhật