Lập trình cơ sở dữ liệu nâng cao 2 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩ...
MICROSOFT VISUAL BASIC Bài : Các Đối Tượng Trong ADODB I, Đối tượng Connection 1, Kết nối sở liệu 2, Thực câu lệnh SQL II, Đối tượng RecordSet 1, Tạo nguồn liệu cho ứng dụng 2, Các thuộc tính RecordSet 3, Các hành động RecordSet III, Đối tượng Command Menu Tiếp 1, Kết nối sở liệu Đoạn lệnh viết Module Public cnn As New ADODB.Connection Public duong_dan As String, strProvider As String Sub Mo_CSDL() duong_dan = App.Path & "\CSDL.MDB" strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & duong_dan If cnn.State = Then cnn.Close cnn.CursorLocation = adUseClient cnn.Open strProvider End Sub Đoạn lệnh viết thư tục Form_Load Form khởi động Private Sub Form_Load() Call Mo_CSDL End Sub Menu Về 1, Kết nối sở liệu • ADODB cung cấp đối tượng Connection để kết nối với CSDL Với Connection, người dùng kết nối với nhiều loại CSDL khác Access, SQL Server, Oracle hay Excel, Mail… • Các thơng tin CSDL muốn kết nối tới cần phải cung cấp cho đối tượng Connection thông qua thuộc tính ConnectionString ConnectionString bao gồm thơng tin Provider Nguồn liệu, cần cung cấp thêm Username Password với CSDL có bảo mật • Thuộc tính CursorLocation giúp định cách data provider cung cấp chức thao tác với CSDL với hai giá trị adUseServer adUseClient • Sau gán giá trị cho ConnectionString, sử dụng hành động Open để mở kết nối • Thuộc tính State giúp kiểm tra trạng thái kết nối • adStateOpen [1] : kết nối mở • adStateClosed [0] : kết nối đóng Menu 2, Thực câu truy vấn SQL Sau kết nối với CSDL, người dùng làm việc với liệu thông qua câu truy vấn Hành động Execcute đối tượng Connection giúp thực câu lệnh SQL VD : Thêm môn Ngoại Ngữ vào bảng Monhoc sql = "INSERT INTO MonHoc(MaMH,TenMH) VALUES('NN01','Ngoai Ngu 1')" cnn.Execute sql VD : Sửa tên mơn Tốn Thực Hành thành mơn Tốn sql = "UPDATE MonHoc SET TenMH='Toan 2' WHERE MaMH = 'T02'" cnn.Execute sql VD : Xố mơn học Ngoại Ngữ vừa nhập khỏi CSDL sql = "DELETE FROM MonHoc WHERE MaMH = 'NN01'" cnn.Execute sql Menu Tiếp 1, Tạo nguồn liệu cho ứng dụng • RecordSet đáp ứng yêu cầu người lập trình hiển thị liệu, thêm, xố, sửa liệu, làm việc dòng liệu thay tập hợp nhiều mẩu tin,… Có thể coi RecordSet đại diện bảng hay view CSDL • Người dùng mở RecordSet để lấy liệu từ bảng hay nhiều bảng CSDL câu truy vấn SQL hay đơn giản cách tên bảng • Việc mở RecordSet thực qua hành động Open • Khai báo RecordSet sau : Dim As New ADODB.RecordSet Menu Về Tiếp Cú pháp : .Open [Source], [ActiveConnection], [CursorType], [LockType] Mơ tả : • Source : Nội dung cần truy xuất • ActiveConnection : Nội dung khai báo ConnectionString tên Connection mở • CursorType : Phân loại recordset Có giá trị sau : + adOpenStatic [3] : mẩu tin tạo máy Không tự động cập nhật + adOpenDynamic [2] : mẩu tin tạo máy chủ Tự động cập nhật + adOpenKeySet [1] : không tự động cập nhật mẩu tin + adOpenForewardOnle [0] : Chỉ di chuyển MoveNext Menu Về • CursorType : Xác định cách khố liệu cập nhật Có giá trị sau : + adLockReadOnly : [1] cho phép đọc (ln ln khố) + adLockOptimistic : [2] khoá cập nhật mẩu tin + adLockBatchOptimistic : [3] giống [2] cho phép cập nhật đồng thời nhiều mẩu tin + adLockPessimistic : [4] mẩu tin khoá thực Update hay AddNew dùng CursorLocation adUseServer Ví dụ : Mở recordset với nguồn liệu bảng sinh viên Dim rsSinhVien As New ADODB.Recordset Sub Lay_Nguon_SinhVien() sql = "SINHVIEN" If rsSinhVien.State = Then rsSinhVien.Close rsSinhVien.Open sql, cnn, 3, End Sub Menu 2, Các thuộc tính RecordSet RecordCount : tổng số mẩu tin RecordSet AbsolutePosition : vị trí mẩu tin hành BOF, EOF : vị trí đầu cuối cấu trúc RecordSet BOF Record Record … Record n -1 Record n EOF Menu Tiếp 3, Các hành động RecordSet a, Hiển thị liệu : • RecordSet dùng làm nguồn liệu (data source) cung cấp liệu cho control khác để hiển thị thông tin chương trình • Các control liên kết liệu với RecordSet thơng qua hai thuộc tính DataSource DataField Ví dụ : Lấy nguồn sinh viên hiển thị lên TextBox Dim rsSinhVien As New ADODB.Recordset Sub Lay_Nguon_SinhVien() sql = "SINHVIEN" If rsSinhVien.State = Then rsSinhVien.Close rsSinhVien.Open sql, cnn, 3, Set txtMaSV.DataSource = rsSinhVien txtMaSV.DataField = "MaSV" Set txtHoTenSV.DataSource = rsSinhVien txtHoTenSV.DataField = "HoTen" End Sub Menu 3, Các hành động RecordSet b, Di chuyển qua lại ghi : Sử dụng hành động Move MoveFirst : di chuyển ghi Move Previous : di chuyển ghi phía trước MoveNext : di chuyển đến ghi MoveLast : di chuyển tới ghi cuối Về Tiếp Menu 3, Các hành động RecordSet Dim rsSinhVien As New ADODB.Recordset Private Sub cmdDau_Click() rsSinhVien.MoveFirst End Sub Private Sub cmdTruoc_Click() If rsSinhVien.AbsolutePosition > Then rsSinhVien.MovePrevious End If End Sub Private Sub cmdSau_Click() If rsSinhVien.AbsolutePosition < rsSinhVien.RecordCount Then rsSinhVien.MoveNext End If End Sub Private Sub cmdCuoi_Click() rsSinhVien.MoveLast End Sub Về Tiếp Menu Về 3, Các hành động RecordSet c, Cập nhật liệu : AddNew : dùng để thêm ghi Update / UpdateBatch : chấp nhận cập nhật thay đổi CancelUpdate / CancelBatch : bỏ qua thay đổi Delete : Xoá bỏ ghi Tiếp Menu 3, Các hành động RecordSet Dim rsSinhVien As New ADODB.Recordset Private Sub cmdThemMoi_Click() rsSinhVien.AddNew End Sub Private Sub cmdSuaDoi_Click() rsSinhVien.Update End Sub Private Sub cmdXoaBo_Click() rsSinhVien.Delete End Sub Về Tiếp Menu Về d, Lọc, tìm kiếm xếp mẩu tin • Trong trường hợp muốn làm việc hay hiển thị chương trình số mẩu tin thoả điều kiện đó, người dùng thuộc tính Filter để lọc mẩu tin muốn làm việc Ví dụ: rsSinhVien.Filter = “MaKhoa = ‘TH01’ And DiemTB >= 5” • Để tìm mẩu tin thoả điều kiện, RecordSet cung cấp sẵn hành động Find Điểm giới hạn ADODB hành động Find RecordSet tìm điều kiện đơn (khơng có mệnh đề AND, OR,…) Ví dụ: rsSinhVien.Find “MaKhoa = ‘TH01’”, 0, adSearchForward,1 • Thay phải xếp mẩu tin lại thời điểm mở RecordSet câu truy vấn, RecordSet cung cấp thuộc tính Sort cho phép người dùng thay đổi cách xếp mẩu tin tuỳ ý Ví dụ: rsSinhVien.Sort “MaKhoa, DiemTB Desc, MaSV” III, Đối tượng Command Menu Tiếp Command cho phép thi hành : A, Các câu SQL tĩnh, ví dụ: 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 B, Các câu SQL có tham số, ví dụ: 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")) III, Đối tượng Command Menu Về C, Các stored procedure (query Access) 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 Chú ý : Với query (stored procedure) có tham số, dùng tập hợp Parameters hay hành động CreateParameter để truyền tham số cho query trước thực nhận giá trị trả ... cầu người lập trình hiển thị liệu, thêm, xoá, sửa liệu, làm việc dòng liệu thay tập hợp nhiều mẩu tin,… Có thể coi RecordSet đại diện bảng hay view CSDL • Người dùng mở RecordSet để lấy liệu từ... động RecordSet a, Hiển thị liệu : • RecordSet dùng làm nguồn liệu (data source) cung cấp liệu cho control khác để hiển thị thông tin chương trình • Các control liên kết liệu với RecordSet thơng... TenMH='Toan 2' WHERE MaMH = 'T 02' " cnn.Execute sql VD : Xố mơn học Ngoại Ngữ vừa nhập khỏi CSDL sql = "DELETE FROM MonHoc WHERE MaMH = 'NN01'" cnn.Execute sql Menu Tiếp 1, Tạo nguồn liệu cho ứng