You are on page 1of 63

Đại Học Sư Phạm Tp.

Hồ Chí Minh Khoa Toán – Tin Học

LẬP TRÌNH WINDOWS

Lập trình cơ sở dữ liệu với thư viện ADO
(ADO – ACTIVEX DATA OBJECT)

• Tổng quan về lập trình CSDL • Thư viện ADO • Lập trình CSDL với ADO
Trần Ngọc Bảo - Email: tnbao.dhsp@gmail.com

Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học

LẬP TRÌNH WINDOWS

Lập trình cơ sở dữ liệu với thư viện ADO
(ADO – ACTIVEX DATA OBJECT)

• Tổng quan về lập trình CSDL • Thư viện ADO • Lập trình CSDL với ADO

Ứng dụng quản lý
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

• Hệ thống quản lý học sinh: lưu trữ thông tin liên quan đến học sinh • Hệ thống quản lý sinh viên: lưu trữ thông tin liên quan đến sinh viên • Hệ thống quản lý nhân sự: lưu trữ thông tin liên quan đế nhân viên trong công ty đến hâ ê ô • Hệ thống quản lý tiền lương • Hệ thống quản lý kế toán • Hệ thống quản trị dự án • …..
TRẦN NGỌC BẢO
3 KHOA TOÁN -TIN HỌC

LẬP TR L RÌNH CSDL VỚI AD C V DO

ĐẠI HỌC SƯ PHẠM TP.HCM

(3)

Ứng dụng Windows (Windows Application)
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thông tin học sinh được lưu trữ như thế nào ?
TRẦN NGỌC BẢO
4 KHOA TOÁN -TIN HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(4)

Ứng dụng Windows (Windows Application)
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thông tin nhân viên được lưu trữ như thế nào ?
TRẦN NGỌC BẢO
5 KHOA TOÁN -TIN HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(5)

Mẫu biểu trong các
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

ứng dụng

LẬP TR L RÌNH CSDL VỚI AD C V DO Thông tin thể hiện trên báo cáo được lấy từ đâu ?
TRẦN NGỌC BẢO
6 KHOA TOÁN -TIN HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(6)

Mẫu biểu trong các
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

ứng dụng

LẬP TR L RÌNH CSDL VỚI AD C V DO Thông tin thể hiện trên báo cáo được lấy từ đâu ?
TRẦN NGỌC BẢO
7 KHOA TOÁN -TIN HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(7)

Dữ liệu trong các
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

ứng dụng quản lý

Thông tin học sinh được lưu trữ như thế nào ? LẬP TR L RÌNH CSDL VỚI AD C V DO Tất cả thông tin liên quan đến học sinh như: Lý lịch học sinh, điểm thi, chuyên cần, lớp học, khối…. Được lưu trữ trong CƠ SỞ DỮ LIỆU ợ g Ệ Thông tin nhân viên được lưu trữ như thế nào ? Tất cả thông tin liên quan đến nhân viên như: Lý lịch nhân viên, quá trình công tác, quá trình lương, kh thưởng, kỷ l ậ l khen h ở luật….Được l luật….Đ Được lưu trữ ữ trong CƠ SỞ DỮ LIỆU Thông tin thể hiện trên báo cáo được lấy từ đâu ? Tất cả thông tin thể hiện trên báo cáo được lấy g ệ ợ y từ CƠ SỞ DỮ LIỆU
TRẦN NGỌC BẢO
8 KHOA TOÁN -TIN HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(8)

Tương tác dữ liệu: thêm, xóa,...
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Lấy dữ liệu

Thêm dữ liệu Xóa Xó dữ liệ liệu
TRẦN NGỌC BẢO

Sửa Sử dữ liệu liệ
ĐẠI HỌC SƯ PHẠM TP.HCM (9)

9 KHOA TOÁN -TIN HỌC

Tương tác dữ liệu: thêm, xóa,...
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thêm dữ liệu ệ Cập nhật dữ liệu Xóa dữ liệu Lấy dữ liệu y ệ

Tất cả các thao tác THÊM, XÓA, SỬA, TRUY VẤN ấ Ê Ó Ử Ấ dữ liệu đều liên quan đến ngôn SQL: INSERT, DELETE, UPDATE INSERT DELETE UPDATE, SELECT
TRẦN NGỌC BẢO KHOA TOÁN -TIN10 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (10) 10)

Lệnh INSERT (tt)
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

• Dùng để thêm 1 hay nhiều dòng vào ể g Table trong CSDL • Cú pháp (thêm 1 dòng)
INSERT INTO <tên bảng>(<danh sách các thuộc tính>) VALUES (<danh sách các giá trị>)
– Thêm mới một nhân viên có họ = ‘Le’, tên lót = ‘Van’, tên = ộ ọ ‘Tuyen’ với mã số = ‘NV001’ vào Table NhanVien
INSERT INTO NHANVIEN(HONV, TENLOT, TENNV, MANV) ( , , , ) VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘NV001’)

TRẦN NGỌC BẢO

KHOA TOÁN -TIN11 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(11) 11)

Lệnh DELETE
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

• Dùng để xóa các dòng của bảng • Cú pháp há
DELETE FROM <tên bảng> [WHERE <điều kiện>]
–Xoá nhân viên có mã số = ‘345345345’ trong Table NhanVien DELETE FROM NHANVIEN O WHERE MANV=‘345345345’ –Xoá tất cả nhân viên có trong Table NhanVien ấ DELETE FROM NHANVIEN
TRẦN NGỌC BẢO KHOA TOÁN -TIN12 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (12) 12)

Lệnh UPDATE
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

• Dùng để thay đổi giá trị của thuộc tính cho các dòng của bảng • Cú pháp
UPDATE <tên bảng> SET <tên thuộc tính>=<giá trị mới>, <tên thuộc tính>=<giá trị mới> mới>, … [WHERE <điều kiện>]

TRẦN NGỌC BẢO

KHOA TOÁN -TIN13 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(13) 13)

Lệnh UPDATE
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Ví dụ
– Sửa thuộc tính ngày sinh của nhân viên có mã số = ‘345345345’ trong Table NhanVien là ’08/12/1965’ UPDATE NHANVIEN SET NGSINH=’08/12/1965’ WHERE MANV=‘333445555’ – Sửa thuộc tính lương của tất cả nhân viên bằng lương cũ * 1.1

UPDATE NHANVIEN SET LUONG=LUONG*1.1

TRẦN NGỌC BẢO

KHOA TOÁN -TIN14 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(14) 14)

CÚ PHÁP CÂU LỆNH SELECT
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

SELECT FROM WHERE GROUP BY HAVING ORDER BY

<Danh sách các cột được chọn> < Danh sách các bảng> <Điều kiện chọn> <Danh sách cột cần nhóm> < Điều kiện nhóm> < Danh sách cột cần sắp xếp>

Dùng để lấy dữ liệu từ CSDL hiển thị lên màn hình, report,…

TRẦN NGỌC BẢO

KHOA TOÁN -TIN15 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(15) 15)

Lập
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

trình CSDL trong ứng dụng quản lý
Thành phần giao diện

LẬP TR L RÌNH CSDL VỚI AD C V DO

CT Nhân sự

Kết nối CSDL

Giao tiếp dữ liệu p ệ

CSDL

Thành phần dữ liệu

TRẦN NGỌC BẢO

KHOA TOÁN -TIN16 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(16) 16)

Lập trình CSDL trong ứng dụng quản lý
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

CT Nhân sự

Thành phần giao diện: Visual Basic, Visual C++, C#, VB.NET, Delphi… Giao tiếp dữ liệu: ODBC, DAO, ADODB, ADO.NET,.. DAO ADODB ADO NET

Kết nối CSDL

CSDL

Thành phần dữ liệu: MS Access, SQL Server, Oracle,…
KHOA TOÁN -TIN17 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (17) 17)

TRẦN NGỌC BẢO

Một số hệ quản trị CSDL thông dụng
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thành phần dữ liệu: MS Access, SQL Server, Oracle,… Oracle MS Access 2000/XP/2003 MS SQL Server 7.0/2000/2005

CSDL

Oracle 8i/9i/10i/11i My SQL

TRẦN NGỌC BẢO

KHOA TOÁN -TIN18 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(18) 18)

Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học

LẬP TRÌNH WINDOWS

Lập trình cơ sở dữ liệu với thư viện ADO
(ADO – ACTIVEX DATA OBJECT)

• Tổng quan về lập trình CSDL • Thư viện ADO • Lập trình CSDL với ADO

Sử dụng thư viện ADO
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Làm thế nào để sử dụng được thư viện ADO để kết nối dữ liệu trong Visual C++ ?

Tạo CMyADO Class :
// Thêm dòng dưới đây vào đầu Class .

#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \ no_namespace rename("EOF", "EndOfFile")

Tạo InitSQLServer() Function trong CMyADO Class :
BOOL CMyADO::InitSQLServer() { if(FAILED(CoInitialize(NULL))) return FALSE t FALSE; return TRUE; } TRẦN NGỌC BẢO KHOA TOÁN -TIN20 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (20) 20)

Thư viện ADO
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

TRẦN NGỌC BẢO

KHOA TOÁN -TIN21 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(21) 21)

Thư viện ADO
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Connection Command RecordSet Field Parameter

TRẦN NGỌC BẢO

KHOA TOÁN -TIN22 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(22) 22)

Kết nối Data Source
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

MS Access

Connection C ti
Ứng dụng

MS SQL Server Q

File *.mdb nào ? VD: QLHS.mdb, QLNS.mdb QLNS mdb

Connection
Ứng dụng

-

Server ? S DatabaseName ? User Name ? Password ? ĐẠI HỌC SƯ PHẠM TP.HCM (23) 23)

TRẦN NGỌC BẢO

KHOA TOÁN -TIN23 HỌC

Đối tượng Connection
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Ý nghĩa

LẬP TR L RÌNH CSDL VỚI AD C V DO

Đối tượng Connection dùng để mở kết nối với nguồn cơ sở dữ g g g liệu, có thể hiểu đối tượng Connection đóng vai trò là chìa khóa mở kết nối giữa ứng dụng với cơ sở dữ liệu (Access, SQL Server, Oracle,…) Ví dụ: Để kết nối ứng dụng quản lý học sinh với cơ sở dữ liệu quản lý ể ế ố học sinh được lưu trữ trong Access chúng ta cần tạo một đối tượng Connection chỉ đến tập tin Access, ví dụ QLHS.mdb hay ợ g ập ụ y C:\C4W\Data\ C:\C4W\Data\QLHS.mdb Để kết nối ứng dụng quản lý học sinh với cơ sở dữ liệu quản lý học sinh được lưu trữ trong SQL Server chúng ta cần tạo một đối tượng Connection chỉ đến DB nào ? Server nào ? Với User và password nào ? p
TRẦN NGỌC BẢO KHOA TOÁN -TIN24 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (24) 24)

Đối tượng Connection
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Connection object

Properties Atributes At ib t CommandTimeOut ConnectionString ConnectionTimeOut CursorLocation DefaultDatabase Errors Collection Isolation Level Mode Properties collection Provider P id State Version

Method B i T Begin Trans Cancel Close CommitTrans Execute Open OpenShema RollbackTrans

Event B i T BeginTransComplete C l t CommitTransComplete ConnectComplete DisConnect ExecuteComplete InfoMessage RollbackTransComplete WillConnect WillExecute

TRẦN NGỌC BẢO

KHOA TOÁN -TIN25 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(25) 25)

Đối tượng Connection
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Thuộc tính: ConnectionString

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thuộc tính ConnetionString dùng để gán tên tập tin MDB nếu sử dụng A d Access h ặ xác lậ S hoặc á lập ServerName, DBN N DBName, U UserName, N Password nếu kết nối với SQL Server Phương thức: Ph ơng thức Open Sau khi xác lập thuộc tính ConnetionString, gọi hàm Open để mở Connnection. Connnection Thông thường trong một ứng dụng Connection chỉ mở một lần khi load ứng dụng Biến Connection thường được khai báo toàn cục để có thể ế ể ể sử dụng trong toàn bộ ứng dụng Phương thức: Close Phương thức Close được gọi để đóng Connection. Thông thường trong một ứng dụng gọi close đối tượng connection khi g g ộ g ụ g gọ ợ g kết thúc chương trình
TRẦN NGỌC BẢO KHOA TOÁN -TIN26 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (26) 26)

Đối tượng Connection
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Kết nối CSDL SQL Server
//Khai báo biến ả //Kh i bá biế quản lý connection i _ConnectionPtr m_pConnection;
HRESULT hr; hr = m_pConnection.CreateInstance( __uuidof( Connection ) ); if (SUCCEEDED(hr)) { hr= m pConnection->Open( bstr t(L"Provider=sqloledb;Data m_pConnection->Open(_bstr_t(L Provider=sqloledb;Data Source=ServerName;InitialCatalog=DatabaseName;"), _bstr_t(L"UserName"), _bstr_t(L"Password"), adModeUnknown); if (SUCCEEDED(hr)) { bRes = TRUE; } }

TRẦN NGỌC BẢO

KHOA TOÁN -TIN27 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(27) 27)

Tương tác dữ liệu: thêm, xóa,...
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Lấy dữ liệu ệ

Thêm Thê dữ liệu Xóa dữ liệu
TRẦN NGỌC BẢO

Sửa dữ liệu
ĐẠI HỌC SƯ PHẠM TP.HCM (28) 28)

KHOA TOÁN -TIN28 HỌC

Thực thi câu lệnh Insert/Delete...
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thêm dữ liệu Cập nhật dữ liệu ập ậ ệ Xóa dữ liệu Lấy dữ liệu

Thực thi các câu lệnh Insert, Delete, update, Select thông qua đối tượng

Command
KHOA TOÁN -TIN29 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (29) 29)

TRẦN NGỌC BẢO

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S
Command Object

LẬP TR L RÌNH CSDL VỚI AD C V DO

Properties ActiveConnection CommandText CommandTimeOut CommandType Name Parameter Collection Prepared P d Properties Collection State*

Method Cancel CreateParameter Execute

Parameter Colection Parameter Object Properties Collection Properties Object

TRẦN NGỌC BẢO

KHOA TOÁN -TIN30 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(30) 30)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Thuộc tính: ActiveConnection

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thuộc tính ActiveConnetion dùng để gán một đối tượng Connection đang được mở C ti đ đ ở Thuộc tính: CommandText Thuộc tính CommandText dùng để xác định câu lệnh SQL “thao tác” cần thực hiện trong 4 loại thao tác : SELECT, INSERT, DELETE, DELETE UPDATE Thuộc tính: CommandType Thuộc tính CommandType dùng để xác định nội dung trong CommandText thuộc loại nào ? CommandText là tên của Table/Views, Tên Stored procedure hay một câu lệnh SQL ? Phương thức: Execute Phương thức Execute được gọi để thực thi một câu lệnh SQL được gán cho trong thuộc tính CommandText
TRẦN NGỌC BẢO KHOA TOÁN -TIN31 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (31) 31)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

//Khai báo biến quản lý Command _CommandPtr g_pCmd; C dPt C d
Kết nối CSDL thông qua Connection
Cú pháp g_pCmd.CreateInstance(__uuidof(Command)); g_pCmd->ActiveConnection=m_pConnection;

//với m pConnection là 1 connection đang mở m_pConnection

TRẦN NGỌC BẢO

KHOA TOÁN -TIN32 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(32) 32)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

//Khai báo biến quản lý Command _CommandPtr g_pCmd;
Thực thi câu lệnh SQL: Insert/Delete/Update Th â lệ h SQL I t/D l t /U d t
Cú pháp CString sSQL; g_pCmd->CommandText=_bstr_t(sSQL); C d >C dT t b t t( SQL) g_pCmd->CommandType=adCmdText; _variant_t vRecsAffected(0L); g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified);
TRẦN NGỌC BẢO KHOA TOÁN -TIN33 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (33) 33)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Thực thi câu lệnh SQL: Insert/Delete/Update LẬP TR L RÌNH CSDL VỚI AD C V DO
Ví dụ: thực thi một câu lệnh SQL Xóa dữ liệu từ Table HocSinh
CString sSQL=“Delete From HocSinh”; g_pCmd->CommandText=_bstr_t(sSQL); C d >C dT t b t t( SQL) g_pCmd->CommandType=adCmdText; _ _variant_t vRecsAffected(0L); _ try { g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified); C d >E t (& R Aff t d NULL dO ti U ifi d) } catch( _com_error &e ) { AfxMessageBox("loi"); } TRẦN NGỌC BẢO KHOA TOÁN -TIN34 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (34) 34)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Thực thi câu lệnh SQL: Insert/Delete/Update LẬP TR L RÌNH CSDL VỚI AD C V DO
Ví dụ: thực thi một câu lệnh SQL Insert dữ liệu vào Table HocSinh
CString sSQL=""; sSQL = "Insert into HocSinh(MaHS,TenHS) Values(5"; sSQL = sSQL + ",\'TNB\')"; g_pCmd->CommandText=_bstr_t(sSQL); g_pCmd->CommandType=adCmdText; _variant_t vRecsAffected(0L); try { g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified); } catch( _com_error &e ) { //Xu ly loi }

TRẦN NGỌC BẢO

KHOA TOÁN -TIN35 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(35) 35)

Đối tượng Command
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Thực thi câu lệnh SELECT
LẬP TR L RÌNH CSDL VỚI AD C V DO
Kết quả câu truy vấn SELECT là một danh sách, ví dụ như danh y sách sinh viên, danh sách học sinh, danh sách nhân viên,… Cần có đối tượng lưu trữ kết quả thực thi lệnh SELECT Đó là đối tượng Recordset
Cú pháp
CString sSQL; g_pCmd->CommandText=_bstr_t(sSQL); _ _ _ g_pCmd->CommandType=adCmdText; _variant_t vRecsAffected(0L);
g_pRS = g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified);

TRẦN NGỌC BẢO

KHOA TOÁN -TIN36 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(36) 36)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S
Recordset Object
Properties Method AbsolutePage AddNew AssolutePosition Cancel ActiveCommand CancelBatch ActiveConnection CancelUpdate BOF Clone Bookmark CompareBookmarks CatcheSize Delete CursorLocation Find CursorType GetRows DataMember GetString DataSource Move EditMode MoveFirst EOF MoveLast Fields Collection MoveNext Filter MovePrevious LockType L kT NextRecordset N tR d t MarshalOptions Open MaxRecords Requery PageCount Resync Pagesize Save Properties Collection Supports RecordCount Update Sort Updatebatch State Status staylnSync

LẬP TR L RÌNH CSDL VỚI AD C V DO

Events EndOfRecordset FetchComplete FetchProcess FieldChangeComplete MoveComplete RecordChangeComplete RecordsetChangeComlete WillChangeField WillChangeRecord WillChangeRecordset WillMove

TRẦN NGỌC BẢO

KHOA TOÁN -TIN37 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(37) 37)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S
Recordset Object

LẬP TR L RÌNH CSDL VỚI AD C V DO

Properties AbsolutePage AssolutePosition ActiveCommand ActiveConnection BOF …..

Method AddNew Cancel CancelBatch CancelUpdate Clone

Events EndOfRecordset FetchComplete FetchProcess FieldChangeComplete MoveComplete

Fields Collection Fields object Properties Colection Property Object

TRẦN NGỌC BẢO

KHOA TOÁN -TIN38 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(38) 38)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

//Khai báo biến quản lý RecordSet _RecordsetPtr g pRS; RecordsetPtr g_pRS;
Thực thi câu lệnh SELECT
Cú pháp
g_pRS.CreateInstance(__uuidof(Recordset)); g_pRS->CursorType = adOpenStatic; // Use client cursor to enable AbsolutePosition property. g_p g pRS->CursorLocation = adUseClient; CString sSQL; g_pCmd->CommandText=_bstr_t(sSQL); g_pCmd->CommandType=adCmdText; _variant_t vRecsAffected(0L); g_p g_pRS = g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified); g_p p p

TRẦN NGỌC BẢO

KHOA TOÁN -TIN39 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(39) 39)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

//Khai báo biến quản lý RecordSet _RecordsetPtr g pRS; RecordsetPtr g_pRS;
Ví dụ: thực thi một câu lệnh SQL Select dữ liệu từ Table HocSinh
g_pRS.CreateInstance(__uuidof(Recordset)); g_pRS->CursorType = adOpenStatic; // Use client cursor to enable AbsolutePosition property. g_pRS->CursorLocation = adUseClient; CString sSQL=“Select * from HocSinh”; g_pCmd->CommandText=_bstr_t(sSQL); g_pCmd->CommandType=adCmdText; _variant_t vRecsAffected(0L); g_pRS = g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified); TRẦN NGỌC BẢO KHOA TOÁN -TIN40 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (40) 40)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Duyệt toàn bộ các mẫu tin trong RecordSet
Cú pháp
g_pRS->MoveFirst(); while (! g_pRS->EndOfFile) { _ _variant_t vField1; _ _variant_t vField2; vField1 = g_pRS->GetCollect(L“FieldName1"); vField2 = g pRS->GetCollect(L“FieldName2"); g_p ///////////////////////////////////////////////////////// //////// g_pRS->MoveNext(); }

TRẦN NGỌC BẢO

KHOA TOÁN -TIN41 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(41) 41)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

Duyệt t à D ệt toàn bộ các mẫu ti trong RecordSet á ẫ tin t R dS t
LẬP TR L RÌNH CSDL VỚI AD C V DO
Ví dụ: thực thi một câu lệnh SQL Select dữ liệu từ Table HocSinh
CString sSQL=""; sSQL = "Select * from HocSinh"; …. _variant_t vRecsAffected(0L); g_pRS=doc->myADO.g_pCmd->Execute(&vRecsAffected,NULL,adOptionUnspecified); //Duyet toan bo cac mau tin CString s; g_pRS->MoveFirst(); while (!g_pRS->EndOfFile) { _variant_t vMaHS; _variant_t vTenHS; vMaHS = doc->myADO.g_pRS->GetCollect(L"MaHS"); vTenHS = doc->myADO.g_pRS->GetCollect(L"TenHS"); s.Format("%d",vMaHS.intVal); MessageBox(s); g_pRS >MoveNext(); g pRS->MoveNext(); }

TRẦN NGỌC BẢO

KHOA TOÁN -TIN42 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(42) 42)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Về đầu danh sách
g_pRs->MoveFirst()

Về cuối danh sách
g_pRs > g pRs-> MoveLast()

Di chuyển về sau một mẫu tin
g_pRs-> MoveNext()

Về đầu về trước một mẫu tin
g_pRs-> MovePrevious()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN43 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(43) 43)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->MoveFirst()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN44 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(44) 44)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->MoveLast()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN45 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(45) 45)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->MoveNext()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN46 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(46) 46)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->EOF = True

g_pRs->MoveNext() g pRs >MoveNext()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN47 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(47) 47)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->MovePrevious()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN48 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(48) 48)

Đối tượng Recordset
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Các phương thức duyệt mẫu tin
g_pRs->BOF = T R >BOF True
Mhoc TenMH Nhap mon tin hoc Cau truc du lieu Toan roi rac Co so du lieu MaMH COSC1310 COSC3320 MATH2410 COSC3380 TinChi 4 4 3 3 Khoa CNTT CNTT TOAN CNTT

g_pRs->MovePrevious()

TRẦN NGỌC BẢO

KHOA TOÁN -TIN49 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(49) 49)

Đối tượng Field
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S
Recordset Object

LẬP TR L RÌNH CSDL VỚI AD C V DO

Fields Collection Field Object

Properties ActualSize Atributes DataFormat DefinedSize DefinedSi e Name NumericScale OriginalValue Precision P i i Properties Collection Type UnderlyingValue Value Properties Collection Properties Object

Methods AppendChunk GetChunk

TRẦN NGỌC BẢO

KHOA TOÁN -TIN50 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(50) 50)

Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học

LẬP TRÌNH WINDOWS

Lập trình cơ sở dữ liệu với thư viện ADO
(ADO – ACTIVEX DATA OBJECT)

• Tổng quan về lập trình CSDL • Thư viện ADO • Lập trình CSDL với ADO

Lập trình CSDL với ADO
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Phòng giáo vụ tại một trường Đại học muốn tin học hóa việc ố quản lý đăng ký học chuyên đề của sinh viên. Kết quả phân tích thiết kế được mô hình CSDL quan hệ như sau: 1. SINHVIEN (MASV, HOTEN, PHAI, NGAYSINH, DCHI, MANGANH) Tân từ: Mỗi sinh viên có một mã số duy nhất (MASV), một họ tên (HOTEN), thuộc một phái (PHAI), có một ngày sinh (NGAYSINH), có một địa chỉ (DCHI), và học một ngành (MANGANH) MaSV M SV
K28.103.001 K28.101.001 K28 101 001 K28.101.002 K27.101.001 K27 101 001 K26.102.001 K25.201.001 TRẦN NGỌC BẢO

TenSV T SV
Trần Quốc Thanh Nguyễn Công Phú Phan Anh Khanh Phạm Khá h Như Ph Khánh Trần Ngọc Dung Phạm Khánh Như KHOA TOÁN -TIN52 HỌC

Nam N
1 1 1 2 3 4

Khoa Kh
CNTT TOAN TOAN TOAN VLY HOA (52) 52)

ĐẠI HỌC SƯ PHẠM TP.HCM

Lập trình CSDL với ADO
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Xem danh sách sinh viên Thêm mới sinh viên Xóa sinh viên khỏi danh sách Thay đổi thông tin sinh viên

TRẦN NGỌC BẢO

KHOA TOÁN -TIN53 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(53) 53)

Xem danh sách sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Lấy danh sách sinh viên lưu trữ trong table SinhVien trong CSDL hiển thị lên Grid trong màn hình Thông tin sinh viên

Thực hiện truy vấn dữ liệu với câu lệnh SELECT

TRẦN NGỌC BẢO

KHOA TOÁN -TIN54 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(54) 54)

Xem danh sách sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Lấy danh sách sinh viên lưu trữ trong table SinhVien trong CSDL hiển thị lên Grid trong màn hình Thông tin sinh viên

SELECT MASV, TENSV, NAM, KHOA FROM SINHVIEN
TRẦN NGỌC BẢO KHOA TOÁN -TIN55 HỌC

Thực hiện truy vấn dữ liệu với câu lệnh SELECT

ĐẠI HỌC SƯ PHẠM TP.HCM

(55) 55)

Xem danh sách sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Lấy danh sách sinh viên lưu trữ trong table SinhVien trong CSDL hiển thị lên Grid trong màn hình Thông tin sinh viên Cần phải sử dụng các đối tượng sau trong thư viện ADO Connection C ti Thiết lập kết nối với CSDL có chứa Table SinhVien Command Thực thi câu lệnh SQL SELECT MASV, TENSV, NAM, KHOA FROM SINHVIEN Recordset q ự ệ Q Chứa kết quả thực thi câu lệnh SQL SELECT trên
TRẦN NGỌC BẢO KHOA TOÁN -TIN56 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (56) 56)

Thêm mới sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Lấy thông tin sinh viên trong màn hình Thông tin sinh viên lưu vào Table HocSinh

Thực hiện câu lệnh INSERT

TRẦN NGỌC BẢO

KHOA TOÁN -TIN57 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(57) 57)

Thêm mới sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Lấy thông tin sinh viên trong màn hình Thông tin sinh viên lưu vào table SinhVien Cần phải sử dụng các đối tượng sau trong thư viện ADO Connection C ti Thiết lập kết nối với CSDL có chứa Table SinhVien Command Thực thi câu lệnh SQL INSERT INTO SINHVIEN (MASV, TENSV, NAM, KHOA) VALUES (‘????’,’????’,???,’???’)

Các g trị MASV, TENSV,.. Được lấy từ các control giá ị , , ợ y (Edittext) trong màn hình thông tin sinh viên
TRẦN NGỌC BẢO KHOA TOÁN -TIN58 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (58) 58)

Xóa sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Xóa sinh viên đang được chọn trong danh sách sinh viên

Thực hiện câu lệnh DELETE

TRẦN NGỌC BẢO

KHOA TOÁN -TIN59 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(59) 59)

Xóa sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Xóa sinh viên đang được chọn trong danh sách sinh viên ra khỏi table SinhVien Cần phải sử dụng các đối tượng sau trong thư viện ADO Connection C ti Thiết lập kết nối với CSDL có chứa Table SinhVien Command Thực thi câu lệnh SQL DELETE FROM SINHVIEN WHERE MASV = ‘???’

Giá trị MASV được lấy từ các control (MaSV) trong màn ị ợ y ( ) g hình thông tin sinh viên
TRẦN NGỌC BẢO KHOA TOÁN -TIN60 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (60) 60)

Cập nhật thông tin sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Thiết kế màn hình quản lý sinh viên cho phép thực hiện các thao ế ế tác liên quan đến sinh viên như: Thay đổi thông tin sinh viên đang được chọn bằng thông tin đã được sửa đổi trong màn hình thông tin sinh viên

Thực hiện câu lệnh UPDATE

TRẦN NGỌC BẢO

KHOA TOÁN -TIN61 HỌC

ĐẠI HỌC SƯ PHẠM TP.HCM

(61) 61)

Cập nhật thông tin sinh viên
BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO

Để cập nhật thông tin sinh viên trên màn hình vào table SinhVien trong CSDL Cần phải sử dụng các đối tượng sau trong thư viện ADO Connection C ti Thiết lập kết nối với CSDL có chứa Table SinhVien Command Thực thi câu lệnh SQL UPDATE SINHVIEN SET HOTEN = ‘???’, NAM = ???, KHOA = ‘???’ WHERE MASV = ‘???’ ??? Các g trị MASV, TENSV,.. Được lấy từ các control giá ị , , ợ y (Edittext) trong màn hình thông tin sinh viên
TRẦN NGỌC BẢO KHOA TOÁN -TIN62 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (62) 62)

BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S

LẬP TR L RÌNH CSDL VỚI AD C V DO
TRẦN NGỌC BẢO KHOA TOÁN -TIN63 HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (63) 63)