Tải bản đầy đủ (.doc) (49 trang)

truy nhập cơ sở dữ liệu trong visual basic.doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (308.43 KB, 49 trang )

III/ Truy cập cơ sở dữ liệu trong Visual Basic
1/ Giới thiệu ODBC (Open Database Connectivity)
 Khái niệm
 ODBC là một chuẩn do Microsoft đưa ra để truy cập dữ liệu .Phát
triển ODBC, Microsoft muốn xây dựng một Application Programming
Interface ( API ) duy nhất có thể sử dụng để truy cập cơ sở dữ liệu
trên nhiều hệ quản lý cơ sở dữ liệu khác nhau. Có 2 ưu điểm mà
ODBC tận dụng được là :
• ODBC cung cấp một giao diện duy nhất để truy cập đến
nhiều cơ sở dữ liệu khác nhau, nhờ đó giảm bớt thời gian
nghiên cứu cơ sở dữ liệu mới cho bạn và cho nhà phát triển .
• ODBC cho phép phát triển ứng dụng Client độc lập với
Server cuối .
 ODBC là thành phần tối quan trọng cho phép bạn sử dụng Visual
Basic để phát triển các ứng dụng Client / Server .
 Cấu trúc của ODBC gồm 4 phần chính :
• Application (ứng dụng) : là giao diện để người dùng làm việc
với ứng dụng. Nó sử dụng API ( Application Programming
Interface) với ODBC để xây dựng kết nối đến cơ sở dữ liệu và
điều khiển dữ liệu thông qua các câu lệnh SQL.
• Driver Manager ( trình quản lý điều khiển ) : là trung gian
giữa ứng dụng và trình điều khiển đã được xác đònh để truy cập
từng loại cơ sở dữ liệu. Còn đối với dữ liệu , nó chỉ yêu cầu kết
nối đến DataSource , không cần thiết một liên kết đến trình
điều khiển.
• Driver (trình diều khiển ) :bổ sung cho ODBC API một hệ
thống quản lý cơ sở dữ liệu bằng cách xây dựng mối quan hệ
đến server, chòu sự điều khiển của các điều lệnh SQL sau đó
trả kết quả về, hay thông báo lỗi cho ứng dụng .
• DataSource ( nguồn dữ liệu ) : đây là sự kết nối giữa hệ
quản trò cơ sở dữ liệu với hệ điều hành từ xa hay mạng được


yêu cầu để truy cập một cơ sở dữ liệu riêng nào đó chẳng hạn :
 Oracle chạy dưới Open VMS được truy cập
thông qua Path Works / DECNet.
 DB2 chạy dưới MVS được truy cập thông qua
một cổng
 Paradox hay Foxpro truy cập cơ sở dữ liệu cục
bộ nên không đòi hỏi hệ điều hành từ xa hay mạng
nào .
 Thực chất ODBC là các tập tin DLL do các nhà cung cấp xây dựng và
thông qua một giao diện nào đó, người dùng sẽ cung cấp các thông số
cho các tập tin này để nó thực hiện nhiệm vụ.
 Ta có thể mô tả cấu trúc ODBC theo hình vẽ như sau :
Application
Driver Manager
Driver
Data Source
Cấu hình ODBC
 ODBC được bổ sung như là một các file có thể thi hành được, như
các file INI, DLL ( Dynamic Link Libraries) như sau :
• ODBC Administrator (ODBCADM .EXE) : là chương
trình thuộc nhóm CONTROL PANEL , cho phép cái
đặt các trình điều khiển ODBC mới và đònh nhgóa
DataSource mới. Việc cài đặt sẽ chi tiết hơn trong
ODBCINST . INI , và DataSource cũng rõ ràng hơn trong
ODBC . INI .
• Drive Manager (ODBC . DLL) : quản lý trình điều
khiển, chòu trách nhiệm kết nối DataSource đến các trình
điều khiển. Khởi động các trình điều khiển ODBC khác
nhau và khởi động kích hoạt khác.
• Drivers : Các trình điều khiển tự chúng bao gồm một

hay nhiều DLLs cũng như hỗ trợ các file INI , tùy thuộc vào
các trình bổ sung của các nhà cung cấp .
 Trước khi có thể truy cập đến một cơ sở dữ liệu thông qua ODBC ,
cần phải đònh nghóa DataSource để ODBC biết được cần kết nối đến
đâu . Có thể dùng một trong hai cách :
• Sử dụng ODBC Administrator để đònh nghóa Data
Source.
• Sử dụng hàm RegisterDatabase của Visual Basic để
đònh nghóa theo chương trình Data Source .
 Chẳng hạn làm việc với Microsoft SQL Server ta phải biết một số
thông tin sau
• Tên DataSource .
• Mô tả về DataSource .
• Tên Server trên mạng nơi có chứa cơ sở dữ liệu.
• Tên cơ sở dữ liệu.
Ví dụ : Để truy cập cơ sở dữ liệu Nwind , ta cần đònh nghóa Data Source
như sau
• Tên DataSource : NWIND.
• Mô tả về DataSource : Nothwind Database .
• Tên của Server : Query_1.
• Tên của cơ sở dữ liệu : Northwind.
 Sử dụng ODBC Administrator để đònh nghóa DataSource
• Các bước thực hiện:
 Kích hoạt ODBC Administrator thông qua
Control Panel
 Nhắp vào nút lệnh Add từ cửa sổ chính của
ODBC Administrator để thêm DataSource mới.
 ODBC sẽ cung cấp một danh sách các trình điều khiển
đã được cài đặt sẵn nhằm kết nối với các cơ sở dữ liệu khác
nhau:

 Điền tiếp các thông tin về DataSource vào hộp thoại
của ODBC sau khi đã chọn loại một trình điều khiển để kết
nối . Giả sử ta đã chọn SQL Server :
 Thực hiện xong các bước này khi về cửa sổ chính ta sẽ
thấy được tên DataSource và loại trình điều khiển kết nối
đến. Tức là DataSource đã được đònh nghóa trong ODBC
Administrator :
 Sử dụng RegisterDatabase để đònh nghóa DataSource :
Visual Basic cung cấp phương thức RegisterDatabase để có thể đònh
nghóa theo chương trình Data Source . Phương thức này gồm có 4
tham số sau :
• Data Source Name .
• Trình điều khiển được sử dụng để kết nối cơ sở dữ liệu .
• Một biểu thức số cho biết hộp thoại trình điều khiển ODBC
có nên hiển thò hay không .
• Một chuỗi chứa tất cả các thông tin khác được yêu cầu bởi
trình điều khiển .
Ví dụ : Trong file INI cho Data Source của NWIND mà ta vừa tạo sẽ
thấy :
[NWIND]
Driver = C:\WIN95\SYSTEM\sqlsrvr.dll
Description = Northwind Database
Server = QUE_1
FastConnectionOption = No
UseProcForPrepare = Yes
Database = Northwind
OEMTOANSI = No
Từ đó ta có thể thấy tên DataSource là NWIND , trình điều khiển là
c:\WIN95\SYTEM\sqlsrvr.dll lấy được các thông tin trên ta sẽ tạo mã
lệnh có tác dụng tương đương l à:

2/ DAO (Database Access Object)
 Khái niệm
 DAO : Các đối tượng truy xuất dữ liệu, cho phép những ứng dụng khác
giao tiếp với hệ thống cơ sở dữ liệu như Microsoft Access và
Microsoft FoxPro.
Private Sub cmdRegDatabase_Click()
Dim Attribs As String
Attribs = “ Description = Northwind Database “ & Chr$ (13)
Attribs = Attribs & “ Server = QUE_1” & Chr$ (13)
Attribs = Attribs & “Database = Northwind”
DBEngine.RegisterDatabase “NWIND”,“SQL Server”,True,Attribs
End Sub.
 Là một thư viện đối tượng có khả năng mở rộng khá tốt cho phép
người triễn khai thao tác nhiều loại cơ sở dữ liệu.
 Cung cấp các khớp nối đến các chức năng của Jet Engine từ Visual
Basic và Microsoft Access.
 Dùng DAO có thể xử lý mỗi đối tượng cá biệt như Workspace,
Database,
TableDef, Field … bằng cách tạo một biến đối tượng và qui đònh biến
đó biểu thò một đối tượng nào muốn xử lý, giúp cho việc truy cập cơ sở
dữ liệu dễ dàng hơn.
 Mở một cơ sở dữ liệu đã có sẵn
 Khai báo các biến đối tượng cơ sở dữ liệu bằng lệnh Dim
 Dùng các biến đối tượng cơ sở dữ liệu để liên kết đến các cơ sở dữ
liệu.
 Ví dụ:
Dim db As Database, ws As Workspace
Set ws = DBEngine.Workspace(0)
Set db = ws.OpenDatabase ( " c :\ nwind . mdb ")
 Sử dụng Recordset

• Tạo biến đối tượng Recordset.
• Xác đònh các fields và records trong một bảng, hay mối liên
kết của các record giữa các bảng với nhau.
• Các loại recordsets :
Recordset Type Definition
Table Cho phép thao tác trực tiếp trên bảng của dữ liệu đang
mở.
Dynaset Tập hợp các con trỏ đến dữ liệu được mở.
Snapshot Dữ liệu được lưu trữ trong bộ nhớ. Chỉ được phép đọc.
 Đònh vò Record
 Khi di chuyển từ record này sang record khác trong tập hợp recordset,
Jet Database Engine cung cấp các phương pháp để thực hiện như sau:
Technique Description
Phương pháp Move Thay đổi vò trí con trỏ từ record hiện tại sang record khác.
Phương pháp Find Xác đònh record kế tiếp thỏa điều kiện cần tìm. Được áp
dụng cho dynasets và snapshots
Phương pháp Seek Tìm record đầu tiên của bảng thỏa điều kiện yêu cầu.
Thuộc tính Bookmark Đánh dấu vò trí của một record xác đònh.
 Thêm records (AddNew Records)
 Dùng phương pháp AddNew để thiết lập một record mới. Thực chất
phương pháp AddNew là xóa vùng nhớ tạm để thêm các thông tin của
record mới . Dữ liệu trong các field của một record sẽ được chấp nhận
sau khi dùng phương pháp Update.
 Cấu trúc lệnh : recordset . AddNew
 Chuẩn bò thay đổi Records (Edit Records)
 Chép record hiện thời vào vùng nhớ tạm. . Dữ liệu sau khi thay đổi
trong các field của một record sẽ được chấp nhận sau khi dùng phương
pháp Update.
 Cấu trúc lệnh : recordset . Edit
 Cập nhật (Update Records)

 Lưu dữ liệu từ vùng nhớ tạm vào cơ sở dữ liệu,chèn nội dung mới vào
record hiện thời hoặc thêm vào một record mới.
 Cấu trúc lệnh : recordset . Update (type, force )
 Xóa Records
 Xóa record hiện thời.
 Cấu trúc lệnh : recordset . Delete
3/ RDO (Remote Data Object )
So sánh RDO và DAO
 RDO: Remote Data Objects : cung cấp các phương pháp truy cập đến
cơ sở
dữ liệu. Nhìn chung RDO và DAO tương tự nhau, tuy nhiên dùng
RDO sẽ làm cho ứng dụng nhanh hơn, đơn giản vì nó dùng các hàm hệ
thống ở mức thấp hơn. Tuy nhiên có trở ngại là việc hiển thò kết quả
khi dùng phương pháp này không được hổ trợ như DAO.
 Có thể so sánh tương quan giữa RDO và DAO như sau :
RDO Objects DAO Objects
rdoEngine DBEngine
rdoEnviroment Workspace
rdoConnection Database
rdoTable TableDef
rdoResultset Recordset
rdoColumn Field
rdoQuery QuetyDef
rdoParameter Parameter
 Các kiểu hỗ trợ của rdoResultset, giống như của Recordset.
rdoResultset Types Recordset Types
Keyset Dynaset
Static Snapshot
Dyanmic N/A
Forward-only Forward - only

 rdoResultset của RDO không trả kết quả về dạng bảng.
 Các phương pháp :
RDO Method RDO Object DAO Method DAO Object
RdoCreateEnviroment rdoEngine CreateWorkspacce DBEngine
BeginTrans rdoConnection BeginTrans Workspace
CommitTrans rdoConnection CommitTrans Workspace
OpenConnection rdoEnviroment OpenDatabase Workspace
RollbackTrans rdoConnection Rollback Workspace
CreateQuery rdoConnection CreateQueryDef Database
Execute rdoConnection Execute Database
OpenResultset rdoConnection OpenResultset Database
Cả DAO và RDO cùng có chung các phương pháp sau :
• AddNew : thêm một hàng (record)
• Delete : xóa hàng (record) mà con trỏ đang trỏ đến.
• Edit : chuẩn bò thay đổi hàng (record) mà con trỏ đang trỏ
đến.
• MoveFirst : di chuyển về record đầu tiên.
• MoveLast : di chuyển về record cuối cùng.
• MoceNext : di chuyển đến record tiếp sau.
• MovePrevious : di chuyển đến record trước đó.
• Update : cập nhật những thay đổi trên record.
4/ RDC (Remote Data Control )
 Kết nối đến dữ liệu thông qua ODBC. Đây là một công cụ tương đối
tốt vì được hổ trợ hiển thò kết quả chẳng hạn dùng Dbgrid, qua thử
nghiệm cho thấy tốc độ khá nhanh so với các phương pháp khác.
Ví dụ : dùng RDC để kết nối đến Oracle thông qua DSN có tên ora
rdc.DataSourceName = "ora"
rdc.UserName = "abc"
rdc.Password = "fff"
rdc.SQL = "select * from hoso"

rdc.CursorDriver = rdUseClientBatch
rdc.Refresh
Sau đó để hiển thò kết quả này ta dùng Dbgrid và gán thuộc tính:
Dbgrid.Datasource = rdc
Nội dung sẽ được hiển thò ngay trên Dbgrid.
 Các thuộc tính :
RDC Property Data Control Property
BOFAction BOFAction
DataSourceName DatabaseName
EOFAction EOFAction
ResultsetType RecordsetType
SQL RecordSource
5/ ADO (ActiveX Data Object)
ADO là phương pháp truy cập dữ liệu thông qua OLE DB. Đến VB 6 thì
đây được xem như là phương pháp truy cập dữ liệu chủ yếu. Nó được
hổ trợ mạnh bằng các thành phần mới có ghi chú (OLEDB). Việc
hiển thò dữ liệu cũng như các tập hợp hết quả trả về đều tiện lợi.
 Các thành phần của ADO:
 ADO cung cấp các phương pháp :
• AddNew : thêm một hàng (record)
Connection
Errors Errors
Command
Parameters
Parameter
Recordset
Fields Field
• Delete : xóa hàng (record) mà con trỏ đang trỏ đến.
• Close : đóng sự kiện mở một một recordset.
• Move : di chuyển đến vò trí hiện thời của record

• MoveFirst : di chuyển về record đầu tiên.
• MoveLast : di chuyển về record cuối cùng.
• MoceNext : di chuyển đến record tiếp sau.
• MovePrevious : di chuyển đến record trước đó.
• Update : cập nhật những thay đổi trên record.
• CancelUpdate : hủy bỏ sự thay đổi của một record hiện thời
hay thêm một record mới.
• Open : mở record mới ngay vò trí con trỏ hiện thời.
• Requery : cập nhật dữ liệu trong tập recordset bằng câu lệnh
SQL.
• Supports : cung cấp kiểu hàm riêng cho một recordset tiêu
biểu
Ví dụ: dùng ADO để truy cập dữ liệu trên SQL server dùng driver
ado.ConnectionString = “Driver=SQL
Server;Server=172.28.28.11;UID=sa
;PWD=gg;Database=nwind”
adoCommandType = adCmdText
ado.RecordSource = "Select * from hoso"
ado.Refresh
Hoặc ta có thể dùng DSN:
ado.ConnectionString =
“DSN=sql;UID=sa;PWD=gg;Database=nwind”
adoCommandType = adCmdText
ado.RecordSource = "Select * from hoso"
ado.Refresh
Hoặc dùng cách
Set conn = New ADODB.Connection
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.3.51;
DataSource=c:\Nwind.mdb"
conn.Open

Set rado = New ADODB.Recordset
rado.Open "Select * from hoso", conn, adOpenKeyset,
adLockPessimistic,
adCmdText
Set ado.Recordset = rado
6/ ODBC API Function
Đây là phương pháp dùng trực tiếp các hàm ODBC cấp thấp để truy cập
dữ liệu
♦ Declare Function SQLAllocEnv Lib "odbc32.dll"
(env As Long) As Integer
♦ Declare Function SQLAllocConnect Lib "odbc32.dll"
(ByVal env As Long, hdbc As Long) As Integer
♦ Declare Function SQLConnect Lib "odbc32.dll"
(ByVal hdbc As Long, ByVal Server As String,
ByVal serverlen As Integer, ByVal uid As String,
ByVal uidlen As Integer, ByVal pwd As String,
ByVal pwdlen As Integer) As Integer
♦ Declare Function SQLFreeConnect Lib "odbc32.dll"
(ByVal hdbc As Long) As Integer
♦ Declare Function SQLDisconnect Lib "odbc32.dll"
(ByVal hdbc As Long) As Integer
♦ Declare Function SQLAllocStmt Lib "odbc32.dll"
(ByVal hdbc As Long, hstmt As Long) As Integer
♦ Declare Function SQLFreeStmt Lib "odbc32.dll"
(ByVal hstmt As Long, ByVal EndOption As Integer)
As Integer
♦ Declare Function SQLExecDirect Lib "odbc32.dll"
(ByVal hstmt As Long, ByVal sqlString As String,
ByVal sqlstrlen As Long) As Integer
♦ Declare Function SQLSetConnectOption Lib

"odbc32.dll" (ByVal hdbc&, ByVal fOption%, ByVal
vParam&) As Integer
♦ Declare Function SQLSetStmtOption Lib
"odbc32.dll" (ByVal hstmt&, ByVal fOption%, ByVal
vParam&) As Integer
♦ Public Declare Function SQLDriverConnect Lib
"odbc32.dll" (ByVal hdbc&, ByVal hWnd As Long,
ByVal szCSIn$, ByVal cbCSIn%, ByVal szCSOut$,
ByVal cbCSMax%, cbCSOut%, ByVal fDrvrComp%) As
Integer
♦ Public Declare Function SQLCancel Lib
"odbc32.dll" (ByVal hstmt&) As Integer
Vì sử dụng hàm cấp thấp nên tất nhiên tốc độ sẽ nhanh nhất, tuy nhiên
đòi hỏi phải xử lý rất phức tạp. Do đó chỉ được dùng khi thật cần thiết.
7/ Hiển thò dữ liệu :
 Hộp liệt kê (List box)
 Dùng tính chất Text để hiển thò thông tin đã được lưu trữ dưới dạng
chuỗi.
 Tính chất List : một mảng chuỗi chứa mọi mục, dùng để khởi tạo các
mục trong hộp liệt kê.
 Để chọn một mục trong hộp liệt kê ta nhắp chuột lên mục đó thông
qua sự kiện Click hay Double - Click.
 Để thêm một phần tử vào danh sách, có thể dùng hộp property của
List box hay dùng : object . AddItem item, index
 Khi xóa một phần tử trong danh sách cần biết giá trò index của phần
tử đó trong danh sách,có thể dùng : object . Remove Item, index
 Nếu xóa tất cả các phần tử trong danh sách thì dùng: object .Clear
 Hộp combo
 Tính chất Style : đònh dạng của hộp combo
• Style= 0 (drop down combo ), bao gồm một text box và một

danh sách các chọn lựa thả sẵn xuống.
• Style = 1 (simple combo box), hiển thò dưới dạng một text
box và một danh sách nhưng không thả xuống.
• Các giá trò này có được bởi sự kiện Change.
• Style = 2 (drop down list ), một danh sách thả sẳn xuống.
 Các mục trong hộp sẽ được sắp xếp theo thứ tự ASCII khi chọn tính
chất

×