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.
Chia sẻ: haohao89 | Lượt xem: 2852 | Lượt tải: 3
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