1, Đối tượng Connection : 1.1, Kết nối với CSDL : - Các loại CSDL có thể kết nối : Access, SQL Server, Oracle, Excel… -Việc kết nối thông tin từ CSDL cho đối tượng Connection được thực
Trang 1+ Giúp chúng ta có thể nắm bắt một cách tổng quát thứ tự các bước lập trình với Cơ Sở Dữ Liệu (CSDL) bằng cách sử dụng ADODB
Mục đích :
+Đối tượng ADODB bao gồm : Connection, Command và RecordSet
1, Đối tượng Connection :
1.1, Kết nối với CSDL :
- Các loại CSDL có thể kết nối : Access, SQL Server, Oracle, Excel…
-Việc kết nối thông tin từ CSDL cho đối tượng Connection được thực hiện thông qua thuộc tính ConnectionString.
ConnectionString gồm 2 thông tin chính là Provider và Nguồn dữ liệu, các
thông tin khác có thể có thêm là UserName và PassWord để có thể truy cập CSDL có bảo mật
- Sau đó, sử dụng hành động Open để mở kết nối Việc kiểm tra trạng thái kết nối thông qua thuộc tính State
Trang 21, Đối tượng Connection :
1.1, Kết nối với CSDL :
-Thủ tục kết nối cơ sở dữ liệu :
Dim CN As New ADODB.Connection,dc As String
Sub KetNoi()
dc = App.Path & " \tenCSDL.mdb"
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dc
CN.CursorLocation = adUseClient
CN.Open
End Sub
- Thuộc tính CursorLocation giúp chỉ định cách Data Project cung cấp các chức năng thao tác với CSDL gồm hai giá trị adUseServer và adUseClient.
Trang 31, Đối tượng Connection :
1.2, Thực Hiện Truy Vấn SQL :
- Sau khi đã kết nối với CSDL, việc truy xuất dữ liệu thường thông qua các câu truy vấn SQL
- Hành động Execute của đối tượng Connection dùng để thực hiện một câu truy vấn SQL
sql = “Update KetQua Set Diem = Diem + 1 Where MaMon=’TH01’”
CN.Execute sql
1.3, Quản Lý Lỗi :
- Connection cung cấp thuộc tính Errors chứa tập hợp lỗi để giúp người lập trình có thể kiểm soát lỗi phát sinh
- Tập hợp Errors gồm các đối tượng Error với những thuộc tính cung cấp
thông tin về lỗi xáy ra như Description, Source, SQL State,…
Trang 42, Đối tượng RecordSet :
2.1, Tạo đối tượng RecordSet :
- RecordSet cho phép làm việc trên từng dòng dữ liệu thay vì trên một tập hợp nhiều mẩu tin Do đó, ta có thể coi RecordSet như một Table hay một Query trong CSDL.Qua đó việc thao tác trên dữ liệu sẽ rất dễ dàng
- Có thể tạo một RecordSet bằng nhiều cách khác nhau như : Chỉ ra tên bảng hay bằng một câu truy vấn SQL
- Việc mở RecordSet được thực hiện qua hành động Open
Tùy vào ngữ cảnh lập trình, RecordSet cung cấp các thuộc tính CursorType
và LockType để người dùng truy cập dữ liệu Hai thuộc tính này có thể được cung cấp trực tiếp qua hành động Open.
Trang 52, Đối tượng RecordSet :
2.2, Hiển thị dữ liệu :
- RecordSet thông qua hai thuộc tính DataSource và DataField cho phép
hiển thị dữ liệu lên các điều khiển(TextBox, Label, CheckBox…)
- Ví Dụ :
Dim rsSinhVien As ADODB.Recordset
Set rsSinhVien = New ADODB.Recordset
rsSinhVien.Open "SINHVIEN", CN, adOpenStatic, _
adLockOptimistic,adCmdTable
Set txtHoTen.DataSource = rsSinhVien
txtHoTen.DataField = "HoTen"
2.3, Làm việc trên các mẩu tin :
- Mẩu tin đang được làm việc gọi là mẩu tin hiện hành
- Để chuyển sang làm việc trên các mẩu tin khác trong RecordSet, người
dùng sử dụng hành động MoveFirst, MoveLast, Move, MovePrevious, MoveNext, Bookmark.
Trang 62, Đối tượng RecordSet :
2.4, Cập nhật dữ liệu :
Ngoài việc là nguồn hiển thị dữ liệu, RecordSet còn cho phép cập nhật dữ liệu
gián tiếp vào CSDL bằng các hành động AddNew, Delete, Update và
CancelUpdate
2.5, Lọc, tìm kiếm và sắp xếp mẩu tin :
2.5.1, Để lọc các mẩu tin ta sử dụng thuộc tính Filter để lọc
VD : rsSinhVien.Filter = “MaKhoa = ‘TH01’ And DiemTB >= 5”
2.5.2, Để tìm kiếm, RecordSet cung cấp hành động Find Hành động này chỉ
có thể tìm trên một điều kiện đơn (không có AND,OR …)
VD : rsSinhVien.Find “MaKhoa = ‘TH01’”, 0, adSearchForward, _
adBookmarkFirst
2.5.3, Để sắp xếp chúng ta sử dụng thuộc tính Sort của RecordSet
VD : rsSinhVien.Sort = “MaKhoa, DiemTB Desc, MaSV”
Trang 72, Đối tượng RecordSet :
2.6, Thông tin về Field dữ liệu :
Thuộc tính Fields là một tập hợp các Field Thông qua Field ta có thể biết đầy
đủ các thông tin như Name,Type,DefineSize,Value,
Ví Dụ :
Dim f as Field
For Each f in rsSinhVien.Fields
MsgBox “Ten field: “ & f.Name & “ Kieu: “ & f.Type & “ Gia tri: “ & _ f.Value
Next
2.7, Thông tin về dữ liệu đang chứa trong RecordSet :
- RecordCount : tổng số mẩu tin
- AbsolutePosition, BOF, EOF : vị trí mẩu tin hiện hành
- EditMode : tình trạng mẩu tin (rsSinhVien.EditMode = adEditAdd,…)
- State : trạng thái kết nối với CSDL
VD : rsSinhVien.State = adStateOpen
Trang 83, Đối tượng Command :
3.1, Command cho phép thi hành các câu truy vấn SQL :
3.1.1, Các câu SQL tĩnh :
Dim rsSinhVien As ADODB.Recordset, Cmd As ADODB.Command Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = CN Cmd.CommandText = "Select * From SinhVien Where DiemTB>=5"
Cmd.CommandType = adCmdText set rsSinhVien=cmd.Execute
3.1.2, Các câu SQL có tham số :
Dim rsSinhVien As ADODB.Recordset, Cmd As ADODB.Command Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = CN Cmd.CommandText = "Select * From SinhVien Where DiemTB>=? And MaKhoa=?"
Cmd.CommandType = adCmdText Set rsSinhVien = Cmd.Execute(, Array(5, "TH01"))
Trang 93, Đối tượng Command :
3.2, Command cho phép thi hành các Stored Procedure (Query) :
- Đối tượng Command cho phép người dùng gọi thực hiện các Query trong
CSDL từ chương trình VB
Ví dụ :
Dim rsSinhVien As ADODB.Recordset, Cmd As ADODB.Command
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = CN
Cmd.CommandText = "Q_DS_SV_TotNghiep"
Cmd.CommandType = adCmdStoredProc
Set rsSinhVien=cmd.Execute
- Với các Query (Store Procedure) có tham số, có thể dùng tập hợp Parameters hay hành động CreateParameter để truyền tham số cho Query trước khi thực hiện cũng như nhận các giá trị trả về