Bài giảng Lập trình kết nối cơ sở dữ liệu

Hiểu và trình bày được lý do phải lập trình kết nối với CSDL • Hiểu và trình bày được các cách tiếp cận lập trình CSDL • Hiểu và trình bày được các kỹ thuật kết nối CSDL khác nhau: ODBC, DAO, RDO, OLE-DB, ADO.NET • Hiểu và trình bày được các bước căn bản để lập trình kết nối với CSDL • Trình bày và áp dụng được cách kết nối từ ngôn ngữ lập trình C# vào SQL-Server.

pdfChia sẻ: haohao89 | Lượt xem: 2762 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Bài giảng Lập trình kết nối cơ sở dữ liệu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 9 Lập trình kết nối CSDL Giảng viên: Thiều Quang Trung Những kỹ năng đạt được • Hiểu và trình bày được lý do phải lập trình kết nối với CSDL • Hiểu và trình bày được các cách tiếp cận lập trình CSDL • Hiểu và trình bày được các kỹ thuật kết nối CSDL khác nhau: ODBC, DAO, RDO, OLE-DB, ADO.NET • Hiểu và trình bày được các bước căn bản để lập trình kết nối với CSDL • Trình bày và áp dụng được cách kết nối từ ngôn ngữ lập trình C# vào SQL-Server. 2 Nội dung bài giảng • Lý do và những khó khăn khi kết nối lập trình và CSDL • Các cách tiếp cận lập trình CSDL • Các kỹ thuật kết nối CSDL khác nhau • Các ví dụ kết nối từ C# vào SQL-Server 3 Tài liệu đọc • DO.Net/Catalog0560__ADO.Net.htm 4 Lập trình kết nối CSDL • Mục đích: Kết nối CSDL với một chương trình khác “thân thiện hơn” • Lý do: Kết hợp sự thân thiện tiện lợi của ngôn ngữ lập trình và tính khoa học, độc lập và thuận lợi trong việc quản lý dữ liệu của CSDL 5 Các cách tiếp cận • Nhúng các câu lệnh: Các câu lệnh CSDL sẽ được nhúng vào chương trình thông qua các lớp, thành phần chuyên dụng • Xây dựng thư viện các hàm API cho CSDL: Tạo ra sự độc lập giữa giao diện và và dữ liệu • Xây dựng một ngôn ngữ riêng thống nhất giữa CSDL và lập trình nhằm chống lại sự “khập khiễng” giữa hai hệ thống (Ví dụ: LinQ) 6 Sự “khập khiễng” • Sự khập khiễng trong các kiểu dữ liệu • Sự khập khiễng trong các ký hiệu • Mỗi ngôn ngữ lập trình lại đòi hỏi cách lắp ghép khác nhau 7 Nhúng code SQL • Hầu hết câu lệnh SQL có thể nhúng vào các ngôn ngữ khác như COBOL, C, Java • Đoạn SQL nhúng bắt đầu là từ khóa EXEC SQL và kết thúc là dấu ;  Ngữ pháp thay đổi theo ngôn ngữ  Cho phép dùng chung biến thường bắt đầu bởi dấu (:) trong SQL 8 Ví dụ code SQL nhúng trong C /* Begin program */ EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION host_name character_string(20) host_emp_number integer EXEC SQL END DECLARE SECTION EXEC SQL WHENEVER SQLERROR STOP EXEC SQL CONNECT db_employees /* Formulate query, something like: */ EXEC SQL SELECT name, emp_number INTO host_name, host_emp_number FROM employees WHERE emp_number = 10001 /* Print host_name and host_emp_number */ EXEC SQL DISCONNECT /* End program */ 9 Sử dụng các hàm thư viện • Code nhúng SQL thích hợp với các câu lệnh CSDL đã được “tính trước” • API: Xây dựng thư viện các hàm thích hợp với các câu lệnh CSDL linh động  Thuận lợi: • Không cần chương trình biên dịch phải duyệt qua code SQL  Bất tiện: • Câu lệnh SQL chỉ được biên dịch lúc chạy 10 Các kỹ thuật kết nối dữ liệu • ODBC, OLE-DB, ADO.NET: là kiến trúc backbone của MS Universal Data Access (UDA) • Giao diện kết nối được cung cấp bởi các vendor • Ví dụ: Oracle RDBMS  Phải cài và cấu hình giao diện Oracle’s SQL*Net trên máy client 11 Ví dụ: kết nối Oracle’s SQL*Net 12 ODBC, DAO, và RDO • Open Database Connectivity (ODBC)  Tập các giao diện mức gọi nhóm truy cập SQL của Microsoft (CLI). (SQL Access Group Call Level Interface)  Hổ trợ rộng giao diện kết nối CSDL  Bất kỳ ứng dụng Windows có thể truy cập relational data sources  Sử dụng SQL thông qua chuẩn giao diện lập trình ứng dụng (API) 13 ODBC, DAO, và RDO … • Data Access Objects (DAO)  Giao diện API hướng đối tượng • Accesses MS Access, MS FoxPro, and dBase databases from Visual Basic programs  Cung cấp một giao diện tối ưu các đặc trưng của Jet data engine cho lập trình viên  Giao diện DAO còn có thể sử dụng để truy cấp các relational data sources khác kiểu 14 ODBC, DAO, và RDO … • Remote Data Objects (RDO)  Giao diện ứng dụng hướng đối tượng mức cao để truy cập các máy chủ CSDL từ xa  Sử dụng DAO và ODBC mức thấp để truy cập CSDL  Được tối ưu để xử lý các CSDL dựa trên máy chủ như MS SQL Server, Oracle, và DB2 • Được cài đặt như mã chia sẽ được link tự động tới Windows thông qua dynamic-link libraries 15 16 ODBC, DAO, và RDO … • Kiến trúc ODBC cơ sở có 03 thành phần chính:  Giao diện ODBC API mức cao thông qua chương trình ứng dụng truy cập chức năng ODBC  Trình Driver manager quản lý tất cả các kết nối CSDL  Trình ODBC driver kết nối trực tiếp tới DBMS 17 18 19 OLE-DB • Mặc dù ODBC, DAO và RDO được sử dụng rộng rãi nhưng nó không hỗ trợ dữ liệu phi quan hệ (non- relational data) • OLE_DB (Object Linking and Embedding for Database) là một phần mềm kết nối CSDL trung gian (database middleware) được thêm các chức năng hướng đối tượng để truy cập các dữ liệu quan hệ hoặc phi quan hệ • Một chuỗi các đối tượng COM cung cấp kết nối CSDL mức thấp cho ứng dụng • Chức năng chia làm 02 nhóm:  Consumers  Providers 20 OLE-DB … • OLE-DB không cung cấp hỗ trợ cho scripting languages • ActiveX Data Objects (ADO) cung cấp giao diện ứng dụng mức cao để tương tác với OLE-DB, DAO, and RDO • ADO cung cấp giao diện hợp nhất truy cập dữ liệu từ bất kỳ ngôn ngữ lập trình nào sử dụng các đối tượng OLE-DB cơ sở 21 OLE-DB … 22 23 OLE-DB … 24 ADO.NET • Thành phần truy cập dữ liệu của framework phát triển ứng dụng Microsoft’s .NET • 02 đặc trưng cho phát triển các ứng dụng phân tán:  DataSet được ngắt kết nối với CSDL thường trú trong bộ nhớ  DataSet được lưu trữ trong định dạng XML • Dữ liệu trong DataSet gắn kết liên tục như tài liệu XML 25 26 ADO.NET … • Những đối tượng đặc biệt dùng để thao tác dữ liệu trong data source  Connection  Command  DataReader  DataAdapter  DataSet  DataTable 27 Ví dụ kết nối từ C# vào SQL-Server xác thực theo SQL Server using System; using System.Data.SqlClient; class MainClass { static void Main(string[] args) { String st=“Data Source=(local);” + “Initial Catalog=MyDatabase;” + “User ID=sa;Password=;”; SqlConnection MyConnection = new SqlConnection(st); MyConnection.Open() } } 28 Ví dụ kết nối từ C# vào SQL-Server xác thực theo Windows using System; using System.Data.SqlClient; class MainClass { static void Main(string[] args) { String st=“Data Source=(local);” + “Initial Catalog=MyDatabase;” + “Integrated security=true;”; SqlConnection MyConnection = new SqlConnection(st); MyConnection.Open() } } 29 Ví dụ truy xuất bằng SQLCommand String sql = "select count(*) from employee"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int numEmp = convert.ToInt32(cmd.ExecuteScalar()); Console.WriteLine("No. Employees is {0}", numEmp); 30 Truy xuất bằng SQLCommand … string SQL = "SELECT * FROM Employee"; SqlCommand cmd = new SqlCommand(SQL, conn); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); Console.WriteLine("ID, FirstName"); while (reader.Read()) { Console.Write( reader["ID"].ToString() + ", "); Console.Write( reader["FirstName"].ToString() + ", "); } reader.Close(); conn.Close(); 31 Các chú ý • using System.Data.SqlClient;  Thư viện dùng cho ADO.NET kết nối với CSDL • SqlConnection: Kết nối với CSDL, các tham số phải điều chỉnh trong connectionString • SqlCommand: Thực thi các câu lệnh SQL • Thành phần CommandType sẽ chỉ định rõ kiểu của câu lệnh CSDL • SqlReader: Đọc kết quả từ câu lệnh CSDL 32
Tài liệu liên quan