Bài giảng truy xuất cơ sở dữ liệu với ADO.NET - ĐH Khoa học Tự nhiên

Tài liệu môn Lập trình ứng dụng quản lý 1 học kỳ 1 năm học 2017-2018 bài lý thuyết 05 về ADO.NET, kết nối và xử lý dữ liệu cơ sở dữ liệu.

2017

67
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan về bài giảng ltudql1 hk1 1718 lt 05 ado net

Bài giảng ltudql1 hk1 1718 lt 05 ado net giới thiệu nền tảng truy xuất cơ sở dữ liệu trong môi trường .NET Framework. Công nghệ ADO.NET bắt nguồn từ thư viện ActiveX Data Objects truyền thống. Cấu trúc mới mang lại khả năng tương tác linh hoạt giữa các hệ thống không đồng nhất. Dữ liệu được đóng gói chuẩn hóa dưới định dạng XML. Điều này giúp thông tin truyền tải an toàn qua giao thức HTTP. Thư viện hỗ trợ khả năng mở rộng vượt trội cho các ứng dụng doanh nghiệp. Hệ thống xử lý mượt mà khối lượng truy cập lớn nhờ cơ chế lưu trữ ngoại tuyến. Lập trình viên dễ dàng tích hợp nhiều hệ quản trị cơ sở dữ liệu khác nhau vào cùng một hệ sinh thái. Các thành phần kết nối và ngắt kết nối vận hành đồng bộ nhằm duy trì sự ổn định. Toàn bộ giải pháp nâng cao năng suất lập trình và tối ưu hóa hiệu năng ứng dụng máy tính.

1.1. Khái niệm cơ bản và vai trò của thư viện ADO.NET

ADO.NET là bộ giao diện lập trình ứng dụng cốt lõi của Microsoft .NET Framework. Nền tảng này đóng vai trò cầu nối trung gian giữa mã nguồn ứng dụng và hệ quản trị dữ liệu. Thư viện cho phép xử lý dữ liệu ở cả hai trạng thái kết nối trực tiếp và ngắt kết nối. Cơ chế đóng gói XML tạo điều kiện trao đổi dữ liệu mượt mà giữa các nền tảng phân tán. Khả năng tương tác đa hệ thống giúp giảm thiểu sự phụ thuộc vào cấu trúc phần cứng cụ thể. Hiệu suất xử lý truy vấn được cải thiện rõ rệt nhờ thiết kế hướng module độc lập.

1.2. Phân loại Database Driver và .NET Data Provider

Database driver là trình điều khiển trung gian giữa phần mềm và hệ quản trị cơ sở dữ liệu. Thị trường công nghệ hiện diện các chuẩn driver phổ biến gồm ODBC, OLEDB, JDBC và ADO.NET Provider. Trong hệ sinh thái .NET, mỗi nhà cung cấp dữ liệu sở hữu bộ thư viện chuyên biệt. Không gian tên System.Data.SqlClient tối ưu hóa tốc độ truy xuất trên Microsoft SQL Server. Không gian tên System.Data.OracleClient chuyên biệt cho cơ sở dữ liệu Oracle. Ngoài ra, System.Data.OleDb và System.Data.Odbc đáp ứng linh hoạt các nguồn dữ liệu kế thừa như Access hoặc FoxPro.

II. Phân tích kiến trúc và thách thức ltudql1 hk1 1718 lt 05 ado net

Kiến trúc ADO.NET chia tách thành hai nhóm đối tượng chính gồm Connected Objects và Disconnected Objects. Nhóm đối tượng kết nối trực tiếp duy trì luồng giao tiếp liên tục với máy chủ dữ liệu. Nhóm đối tượng ngắt kết nối cho phép xử lý dữ liệu lưu động ngay trong bộ nhớ cục bộ. Sự phân chia này giải quyết bài toán tài nguyên nhưng đặt ra nhiều thách thức về đồng bộ hóa. Việc mở và đóng kết nối vật lý liên tục gây tiêu tốn bộ nhớ và giảm tốc độ phản hồi. Nếu không quản lý tốt, máy chủ sẽ rơi vào tình trạng cạn kiệt tài nguyên xử lý. Bên cạnh đó, việc nhúng chuỗi kết nối chứa mật khẩu trực tiếp vào mã nguồn tạo lỗ hổng bảo mật nghiêm trọng. Kẻ tấn công có thể trích xuất thông tin xác thực qua kỹ thuật dịch ngược phần mềm. Do đó, kiểm soát vòng đời kết nối và mã hóa thông tin cấu hình là yêu cầu cấp thiết.

2.1. So sánh mô hình Connected Objects và Disconnected Objects

Mô hình Connected Objects yêu cầu duy trì kết nối mạng xuyên suốt quá trình đọc và ghi dữ liệu. Các đối tượng đại diện tiêu biểu gồm Connection, Command, DataReader và Transaction. Ngược lại, mô hình Disconnected Objects xử lý thông tin độc lập khi kết nối vật lý đã đóng. Hai đối tượng nòng cốt là DataSet và DataTable đóng vai trò như một cơ sở dữ liệu thu nhỏ trong RAM. Disconnected Objects giúp tăng khả năng phục vụ đồng thời cho hàng nghìn người dùng. Tuy nhiên, lập trình viên phải xử lý xung đột dữ liệu khi thực hiện đồng bộ ngược lại máy chủ.

2.2. Vấn đề quá tải kết nối và rủi ro bảo mật chuỗi kết nối

Việc khởi tạo kết nối cơ sở dữ liệu vật lý đòi hỏi quá trình bắt tay và xác thực tốn kém. Nếu ứng dụng tạo kết nối mới cho mỗi thao tác đơn lẻ, máy chủ sẽ nhanh chóng quá tải. Thời gian phản hồi bị kéo dài đáng kể khi lượng truy cập gia tăng đột biến. Thêm vào đó, việc lưu trữ thông tin đăng nhập dạng văn bản thô trong mã nguồn là sai lầm phổ biến. Khi tập tin thực thi bị dịch ngược, mã định danh và mật khẩu quản trị sẽ bị lộ hoàn toàn. Những thiếu sót này làm suy giảm tính an toàn của toàn bộ hệ thống.

III. Phương pháp thao tác dữ liệu chuẩn ltudql1 hk1 1718 lt 05 ado net

Tài liệu ltudql1 hk1 1718 lt 05 ado net xác lập quy trình năm bước chuẩn mực để thao tác cơ sở dữ liệu. Bước đầu tiên thiết lập chuỗi kết nối chính xác theo từng hệ quản trị. Bước thứ hai mở kết nối vật lý bằng đối tượng Connection tương ứng. Bước thứ ba xây dựng chuỗi truy vấn SQL chứa tham số an toàn. Bước thứ tư thực thi câu lệnh thông qua Command hoặc nạp dữ liệu vào DataSet bằng DataAdapter. Bước cuối cùng đóng kết nối ngay sau khi hoàn tất để giải phóng tài nguyên. Để tối ưu hóa hiệu năng, công nghệ Connection Pooling được tích hợp tự động. Cơ chế này tái sử dụng các kết nối vật lý có sẵn trong bộ nhớ đệm. Chuỗi kết nối được tách biệt và lưu trữ an toàn trong tập tin cấu hình app.config hoặc web.config. Lập trình viên sử dụng lớp ConfigurationManager để truy xuất chuỗi kết nối một cách linh hoạt.

3.1. Quy trình năm bước truy xuất cơ sở dữ liệu với ADO.NET

Quy trình truy xuất dữ liệu bắt đầu bằng việc xác định chuỗi kết nối cnStr. Tiếp theo, đối tượng XXXConnection được khởi tạo và kích hoạt phương thức Open. Sau đó, chuỗi truy vấn SQL được cấu trúc chuẩn hóa để truyền vào XXXCommand hoặc XXXDataAdapter. Đối tượng DataReader hỗ trợ đọc dữ liệu dạng luồng một chiều cực nhanh. Ngược lại, DataAdapter sử dụng phương thức Fill để đổ dữ liệu vào DataTable. Cuối cùng, phương thức Close của kết nối bắt buộc phải được gọi. Việc đóng kết nối kịp thời giúp ngăn ngừa hiện tượng rò rỉ bộ nhớ hệ thống.

3.2. Quản lý cấu hình app.config và tối ưu Connection Pooling

Chuỗi kết nối cần được khai báo tập trung trong thẻ connectionStrings của tập tin app.config hoặc web.config. Thư viện System.Configuration cung cấp lớp ConfigurationManager giúp đọc cấu hình an toàn trong thời gian chạy. Kỹ thuật này cho phép thay đổi máy chủ cơ sở dữ liệu mà không cần biên dịch lại mã nguồn. Đồng thời, Connection Pooling tự động nhóm các yêu cầu có cùng chuỗi kết nối. Cơ chế này duy trì các đường truyền vật lý đang rảnh rỗi thay vì khởi tạo mới liên tục. Hiệu suất ứng dụng được duy trì ổn định ngay cả trong giờ cao điểm.

IV. Kết luận và định hướng ứng dụng ltudql1 hk1 1718 lt 05 ado net

Nội dung chuyên đề ltudql1 hk1 1718 lt 05 ado net cung cấp nền tảng vững chắc cho việc xây dựng ứng dụng quản lý doanh nghiệp. Việc nắm vững kiến trúc phân tầng giúp tách bạch rõ ràng giữa giao diện người dùng và tầng dữ liệu. Lập trình viên kiểm soát toàn diện luồng dữ liệu từ mức truy vấn SQL đến hiển thị trên giao diện đồ họa. Kỹ thuật phân chia Connected và Disconnected mang lại sự linh hoạt tối đa khi thiết kế hệ thống phân tán. Việc áp dụng đúng các tiêu chuẩn cấu hình và quản lý kết nối đảm bảo tính mở rộng lâu dài. Các nguyên tắc này vẫn giữ nguyên giá trị cốt lõi trong các công nghệ truy xuất dữ liệu hiện đại. Việc tuân thủ quy trình lập trình an toàn giúp giảm thiểu tối đa các lỗi vận hành và lỗ hổng bảo mật. Đây là hành trang kỹ thuật thiết yếu cho mọi kỹ sư phần mềm chuyên nghiệp.

4.1. Thực tiễn áp dụng ADO.NET trong phát triển phần mềm quản lý

Trong thực tế phát triển phần mềm, ADO.NET phục vụ đắc lực cho các ứng dụng Windows Forms và WPF. Tầng truy cập dữ liệu sử dụng DataTable và DataAdapter để liên kết dữ liệu trực tiếp lên lưới DataGridView. Mô hình ngắt kết nối cho phép người dùng chỉnh sửa thông tin hàng loạt trên bộ nhớ tạm. Sau đó, các thay đổi được cập nhật đồng loạt xuống cơ sở dữ liệu chỉ qua một lệnh gọi Update duy nhất. Phương thức này giảm tải đáng kể lưu lượng truyền thông trên mạng nội bộ doanh nghiệp.

4.2. Các quy chuẩn tối ưu hóa hiệu năng hệ thống dữ liệu

Để tối ưu hóa ứng dụng, lập trình viên cần lựa chọn Data Provider chuyên biệt cho từng loại cơ sở dữ liệu. Cần ưu tiên SqlClient khi làm việc với Microsoft SQL Server để đạt tốc độ tối đa. Luôn sử dụng tham số hóa truy vấn với SqlParameter nhằm triệt tiêu nguy cơ tấn công SQL Injection. Thông tin xác thực nhạy cảm trong chuỗi kết nối cần được mã hóa thông qua tính năng bảo vệ cấu hình. Những tiêu chuẩn này nâng cao độ bền vững và hiệu năng cho mọi hệ thống quản lý dữ liệu.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI. Nếu bạn thấy nội dung không chính xác hoặc có vấn đề, vui lòng Báo lỗi nội dung.

15/06/2026
Ltudql1 hk1 1718 lt 05 ado net

Trích đoạn nội dung tài liệu

ĐHQG HCM – TRƯỜNG ĐH KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN Truy xuất cơ sở dữ liệu với ADO.NET Lập trình ứng dụng quản lý 1 ThS. Ngô Chánh Đức Giới thiệu về ADO.NET Lập trình ứng dụng quản lý 1 Database driver  Database driver – Trình điều kiển CSDL: ▪ Thành phần trung gian giữa hệ quản trị CSDL và bên ngoài (ứng dụng) Database driver DBMS Application Các loại database driver  ODBC driver (Open database connectivity): ▪ phát triển bởi Microsoft. ▪ Hỗ trợ bởi Microsoft SQL Server, MySQL, PostgreSQL, Oracle  OLEDB provider ▪ Microsoft OLE DB Provider for ODBC ▪ Microsoft OLE DB Provider for Oracle ▪ Microsoft OLE DB Provider for Microsoft Jet Các loại database driver  JDBC (Java Database Connectivity) driver: ▪ Được tích hợp trong máy ảo java JVM ▪ Hỗ trợ CSDL sử dụng ODBC, Oracal,  ADO.Net provider: ▪ API của .NET Framework ▪ Hỗ trợ CSDL SQL Server, Orcal, Access,. Thư viện ADO.NET  Phát triển từ thành phần xử lý dữ liệu ADO (ActiveX Data Object)  Có thể thao tác với dữ liệu kết nối, không kết nối và XML  Là một thư viện trong Microsoft .NET Framework Đặc điểm thư viện ADO.NET  Interoperability – Tương tác giữa nhiều hệ thống ▪ Sử dụng định dạng XML để đóng gói dữ liệu  sử dụng được HTTP  Scalability – Hỗ trợ nhiều người dùng ▪ Sử dụng dữ liệu ở dạng disconnected data ▪ Sử dụng Connection pooling để giữ kết nối  Productivity – Mở rộng khả năng làm việc với CSDL  Performance – Hiệu suất Kiến trúc ADO.NET Data Provider và DataSet Connected Objets và Disconnected Objects Connected Objets và Disconnected Objects  Connected objects: là những đối tượng giao tiếp trực tiếp với CSDL.

 Disconnected objects: cho phép các user làm việc với dữ liệu dạng offline (khi đã đóng kết nối cơ sở dữ liệu) .NET Data Provider  Dùng để kết nối với CSDL, thực hiện lệnh và lấy kết quả trả về  Các loại Provider hỗ trợ ▪ .NET Framework Data Provider for SQL Server • namespace System.NET Framework Data Provider for OLE DB • Namespace System.NET Framework Data Provider for ODBC • Namepsace System.NET Framework Data Provider for Oracle • Namespace System.OracleClient Các bộ lớp đối tượng của .NET Data Provider .NET Data Provider XXXConnection XXXCommand XXXDataReader Data Source DataSet XXXDataAdapter (CSDL) XXXParameter XXXTransaction Ví dụ: OleDbConnection, SqlConnection, OracleConnection Các thư viện truy xuất CSDL trong ADO.NET  Về mặt giao tiếp lập trình ứng dụng, cả 3 thư viện trên không khác biệt nhau nhiều lắm.  Dùng thư viện System.SqlClient sẽ truy xuất SQL Server nhanh hơn System.OleDb  Dùng thư viện System.OracleClient sẽ truy xuất Oracle nhanh hơn System.OleDb Truy xuất CSDL với SqlClient và OleDb DataSet DataSet DataSet Tables DataTable Columns DataColumn Rows DataRow Relations DataRelation DataTable  Dùng để lưu trữ dữ liệu trên bộ nhớ DataTable DataRowCollection DataColumnCollection ConstraintCollection DataTable – các thuộc tính Tên thuộc tính Kiểu dữ liệu Rows DataRowCollection Columns DataColumnCollection Constraints ConstraintCollection PrimaryKey DataColumn[ ] TableName string DataColumn  Thêm 1 cột cho bảng DataColumn  Cột có giá trị tự tăng Xác định khóa chính Ràng buộc của Data Table  ForeignKeyConstraint Thêm dữ liệu  Tạo mới DataRow và thêm vào DataTable Xem dữ liệu  Sử dụng phương thức Select Thao tác CSDL với .NET Data Provider Các bước thao tác CSDL • Tạo chuỗi kết nối cnStr Bước 1 • Kết nối CSDL với đối tượng XXXConnection Bước 2 • Tạo chuỗi truy vấn strSQL thao tác CSDL Bước 3 • Thực thi chuỗi strSQL với đối tượng XXXCommand Bước 4 hoặc XXXDataAdapter • Đóng kết nối Bước 5 Bước 1 : Tạo chuỗi kết nối Kết nối với CSDL Access: String cnStr = " Provider = Microsoft.0; Data Source = DeAnCongTy.mdb"; Kết nối với CSDL SQL Server: String cnStr = "Provider=SQLNCLI;Server=(local)\SQLEXPRES S;Database=DeAnCongTy;Trusted_Connection=yes;"; Chuỗi kết nối  Câu hỏi: ▪ nếu không chỉ ra đường dẫn tuyệt đối đến tập tin CSDL thì tập tin CSDL sẽ được hiểu nằm ở đâu? ▪ Làm sao biết được các connection string của các loại cơ sở dữ liệu khác Bước 2: Mở kết nối bằng XXXConnection  Trong trường hợp thao tác với OleDb OleDbConnection cn = new OleDbConnection(cnStr); cn.Fill(dt); Bước 4: Thực thi chuỗi strSQL với XXXCommand  Ví dụ thao tác với OleDb OleDbCommand cmd = new OleDbCommand(strSQL, cn); OleDbDataReader dr = cmd.ExecuteReader();  Đọc kết quả If (dr.HasRows) { While (dr.Read()) { MaHS = dr.GetInt32(0); HoTen = dr.GetString (“HoTen”); } } Bước 5: Đóng kết nối  cn.Close();  Câu hỏi: ▪ Có cần thiết phải mở/đóng kết nối với mỗi lần thao tác với CSDL? Chỉ mở/đóng 1 lần vào đầu/cuối chương trình? Connection Pooling  Cơ chế giúp tiết kiệm chi phí việc lặp lại đóng – mở kết nối đến CSDL  Xem thêm ▪ https://docs.com/en- us/dotnet/framework/data/adonet/sql-server- connection-pooling ▪ https://docs.com/en- us/dotnet/framework/data/adonet/ole-db-odbc-and- oracle-connection-pooling DataTable vs DataReader  DataTable & XXXDataReader: đều lưu giữ kết quả truy vấn.  DataTable: ▪ Truy xuất ngẫu nhiên. Duyệt tới, lui đều được.

▪ Chiếm nhiều bộ nhớ, thường dùng để hiển thị dữ liệu trên DataGridView. ▪ Là kết quả trả về khi thực thi câu query với XXXDataAdapter  DataReader: ▪ Liên kết với kết nối CSDL. ▪ Truy xuất tuần tự. Chỉ duyệt tới, không duyệt lui.

▪ Chiếm ít bộ nhớ. Thường dùng để load dữ liệu lên ComboBox. ▪ Là kết quả trả về khi thực thi câu query với XXXCommand Demo Connection String Cú pháp chung  keyword1=value1;keyword2=value2  Cú pháp cụ thể của mỗi provider ▪ https://docs.com/en- us/dotnet/api/system.con nectionstring?view=netframework-4.com/en- us/dotnet/api/system.con nectionstring?view=netframework-4.1 Sử dụng Windows Authentication Provider Cú pháp SqlClient Integrated Security=true; Integrated Security=SSPI; OleDb Integrated Security=SSPI; Odbc Trusted_Connection=yes; OracleClient Integrated Security=yes; SqlClient Connection String  "Persist Security Info=False;Integrated Security=true; Initial Catalog=AdventureWorks; Server=MSSQL1“  "Persist Security Info=False;Integrated Security=SSPI; database=AdventureWorks; server=(local)"  “Persist Security Info=False;Trusted_Connection=True; database=AdventureWorks;server=(local)" SqlClient Connection String  SQL Server Logins ▪ "Persist Security Info=False;User ID=*****; Password=*****;Initial Catalog=AdventureWorks; Server=MySqlServer” Sử dụng ConnectionStringBuilder SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder["Data Source"] = "(local)"; builder["integrated Security"] = true; builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad"; Console.ConnectionString); Lưu trữ chuỗi kết nối trong tập tin cấu hình  Ứng dụng web: web.config  Ứng dụng desktop: app.config  Chuỗi kết nối được lưu trữ trong phần connectionStrings <connectionStrings> <clear/> <add name="partialConnectString" connectionString="Initial Catalog=Northwind;" providerName="System.SqlClient" /> </connectionStrings> Lấy chuỗi kết nối từ app.config  Bước 1: Thêm tham chiếu thư viện System.Configuration Lấy chuỗi kết nối từ app.config  Bước 2: Sử dụng lớp ConfigurationManager ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings; if (settings != null) { foreach (ConnectionStringSettings cs in settings) { Console.ConnectionString); } } ConnectionStringSettings connectionString = ConfigurationManager.ConnectionStrings["AdventureWorks"]; Bảo mật thông tin kết nối  Sử dụng ConnectionStringBuilder để thành lập chuỗi kết nối  Sử dụng Persist Security Info=False trong choỗi kết nối để không lưu trữ thông tin ID và password  Mã hóa nội dung phần <connectionStrings> trong app.config Connection Pooling Connection Pooling là gì?  Chi phí thiết lập kết nối đến Cơ sở dữ liệu là rất tốt kém  Connection pooling ▪ Lưu lại các kết nối vật lý (ở lần kết nối đầu tiên) ▪ Mỗi khi ứng dụng cần kết nối CSDL, chuỗi kết nối sẽ được kiểm tra  kết nối logic được thiết lập  Có thể xóa các pool bằng phương thức ClearPool hoặc ClearAllPools ▪ Ví dụ: public static void ClearAllPools (); Đối tượng Command

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ