1 Mục lục 1 2 Làm quen với visual basic 0 9


Truy cập dữ liệu dùng điều khiển dữ liệu từ xa



tải về 1.69 Mb.
trang36/39
Chuyển đổi dữ liệu09.10.2016
Kích1.69 Mb.
#32631
1   ...   31   32   33   34   35   36   37   38   39

15.2Truy cập dữ liệu dùng điều khiển dữ liệu từ xa


Điều khiển dữ liệu từ xa (Remote Data Control - RDC) là một cách truy cập dữ liệu từ xa trong ứng dụng viết bằng Visual Basic. Điều khiển này dùng một giao diện lập trình tương tự điều khiển ADO Data, hay là điều khiển DAO Data. Trừ một vài ngoại lệ nhỏ, RDC hoạt động tương tự các điều khiển dữ liệu khác – ta cung cấp cho điều khiển một số thông tin về nơi chứa dữ liệu, nó sẽ trả về dữ liệu và cung cấp cho các điều khiển giao diện người sử dụng quan tâm đến dữ liệu. Người sử dụng sau đó có thể tương tác với dữ liệu thông qua các điều khiển trên giao diện - duyệt dữ liệu, cập nhật, thêm bản ghi mới – và ta không phải lập trình về các hoạt động này.

Lưu ý rằng ta không hạn chế vào RDO khi muốn sử dụng dữ liệu Client / Serve. VB6 giới thiệu một điều khiển dữ liệu mới cho nguồn dữ liệu ADO được thiết kế để thay thế RDC. Tìm hiểu chi tiết thêm trong chương 27.

15.2.1Sử dụng RDC








      1. Trong Visual Basic, chọn menu Project, Components.

      2. Từ danh sách các thành phần, chọn Microsoft Remote Data Control. Thiết lập tham chiếu đến Microsoft Data Bound Grid Control.

      3. Nhấn OK. Điều khiển Remote Data Data Bound Grid xuất hiện trên hộp công cụ.


Hình Biểu tượng của điều khiển RDC (Microsoft Remote Data Control) và điều khiển Microsoft Data Bound Grid xuất hiện trên hộp công cụ.

4. Tạo instance cho điều khiển Remote Data và điều khiển Data Bound Grid trên biểu mẫu.



5. Nếu chưa cung cấp tên người sử dụng và mật khẩu khi tạo tên nguồn dữ liệu ODBC, ta đổi thuộc tính UserName của điều khiển Remote Data là tên người sử dụng để truy cập cơ sở dữ liệu, chẳng hạn như là “randy” hay “sa”.

6. Đổi thuộc tính Password của điều khiển Remote Data là mật khẩu của người sử dụng truy cập cơ sở dữ liệu.

7. Quy định thuộc tính SQL của điều khiển Remote Data là:
Select * from qryCustomer
8. Trong thuộc tính DataSourceName của điều khiển Remote Data chọn DSN cho cơ sở dữ liệu SQL Server. DSN ta tạo trước đây sẽ xuất hiện trong danh sách thả xuống.

9. Chỉ định thuộc tính DataSource của điều khiển DBGridMSRDC1, tên của điều khiển Remote Data.

10. Thi hành ứng dụng. Ứng dụng trả về nội dung của bảng tblCustomer và hiển thị nó trong lưới dữ liệu.

Ngiên cứu kỹ chương này, bạn sẽ thấy rằng sử dụng điều khiển Data với tuỳ chọn ODBCDIRECT và điều khiển Remote Data để truy cập dữ liệu về cơ bản là như nhau. Cả hai đều cho phép truy cập đến cơ sở dữ liệu ODBC không cần lập trình.


VÍ DỤ MẪU Tham khảo ví dụ mẫu của phần này trong đề án RDCTest.vbp, chứa trên thư mục \samples

PhanIV\23-rdo\RDCTest

15.3Sử dụng RDO trong chương trình


Đối tượng dữ liệu từ xa( Remote Data Object-RDO) được sắp xếp trong cấu trúc phân nhánh đối tượng dữ liệu tương tự như DAO(Đối tượng truy cập dữ liệu – Data Access Object ).

Lưu ý rằng mô hình đối tượng của RDO đơn giản hơn DAO. Nhiều chức năng của DAO (như là đáp ứng về bảo mật và khả năng sửa đổi thiết kế cơ sở dữ liệu) được xử lý bởi bộ máy cơ sở dữ liệu. Mặt khác, trong RDO, chức năng này được xử lý bởi server.



LƯU Ý ADO cung cấp mô hình đối tượng đơn giản hơn RDO, trong khi vẫn đảm bảo mọi chức năng của RDO.

Điểm hạn chế này có nghĩa là ta không thể dùng RDO để tạo đối tượng cơ sở dữ liệu như là bảng, view, và thủ tục chứa sẵn (ít ra, ta không thể sử dụng đối tượng để thực hiện điều này – Tuy nhiên, ta có thể dùng RDO để truyền trực tiếp câu lệnh SQL theo thủ tục đến server, nghĩa là hầu hết những gì có thể làm với ISQL/w, ta cũng có thể làm với RDO).



    1. Lập một tham chiếu đến RDO trước khi sử dụng nó. Chọn menu Project, References. Hộp thoại References xuất hiện:

    2. Chọn Microsoft Remote Data Object 2.0 từ danh sách

    3. Nhấn OK. RDO xuất hiện trong ứng dụng.

Thực hiện các bước này khi ứng dụng cần truy cập RDO. Nếu ứng dụng dùng RDC, ta cần phải lập một tham chiếu đến RDO và thêm RDC vào đề án.

Hình 23.5 Kiến trúc đầy đủ của RDO 2.0

15.3.1Quy định thuộc tính bộ máy cơ sở dữ liệu dùng đối tượng RDOENGINE.


Đối tượng rdoEngine là đối tượng ở mức cao nhất trong mô hình đối tượng RDO. Nói chung, ta dùng đối tượng rdoEngine để chỉ định thuộc tính mặc định cho các đối tượng RDO khác mà ứng dụng tạo ra.

Đối tượng rdoEngine còn hữu dụng trong trường hợp ta muốn quy định hay kiểm tra kiểu con trỏ được dùng bởi bộ máy cơ sở dữ liệu. Con trỏ là cách truy cập từng dòng của bộ kết quả. Con trỏ khác nhau có những khả năng khác nhau; ví dụ, con trỏ cuộn tới cho phép truy cập các dòng tuần tự, nhưng không được phép quay ngược lại và tham chiếu đến những dòng trong bộ kết quả ta vừa dịch chuyển qua.



Đối tượng rdoEngine tương đương đối tượng DBEngine của DAO. Không có điểm tương tự trực tiếp với rdoEngine trong ADO; chức năng của nó bị phân chia giữa các đối tượng ConnectionRecordset của ADO.

Ngoài khả năng thể hiện nguồn dữ liệu, đối tượng rdoEngine còn chứa tập hợp rdoErrors cho phép ta lặp xuyên qua toàn bộ thông báo lỗi phát sinh bởi một transaction của một cơ sở dữ liệu nhất định.

Đối tượng rdoEngine chứa tập hợp các đối tượng Enviroment, cũng như tập hợp các đối tượng rdoError.

Ví dụ, nếu ứng dụng cần tạo một số đối tượng dựa trên login thông thường và mật khẩu của người sử dụng, ta có thể chỉ ra các yếu tố này khi ta bắt đầu sử dụng RDO trong ứng dụng. Các giá trị mặc định ta quy định (dùng thuộc tính rdoDefaultPassword rdoDefaultUser) là dành cho các đối tượng rdoEnvironment mà ta tạo ra trong ứng dụng.

Ta cũng có thể dùng đối tượng rdoEngine để diều khiển cách thức tạo và duy trì các con trỏ trong ứng dụng.

Ngoài việc cung cấp các giá trị mặc định cho những đối tượng tạo bởi RDO, đối tượng rdoEngine tự động tạo đối tượng rdoEnvironment. Ta có thể tham chiếu đến đối tượng này trong chương trình như là rdoEnvironments(0).

Hình 23.6 Tập hợp Environment và đối tượng Environment trong cây phân cấp RDO (Đối tượng dữ liệu từ xa)

15.3.2Truy cập môi trường đối tượng rdoEnvironment


Đối tượng rdoEnvironment thể hiện môi trường cơ sở dữ liệu. Đây là một cách tham chiếu đến bộ kết nối cơ sở dữ liệu (theo dạng của đối tượng rdoConnection).

Đối tượng rdoEnvironment tương tự đối với Workspace trong DAO. Với ADO, rdoEnvironment tương tự với đối tượng Connection của ADO.

Cũng như đối tượng rdoEngine, không chắc rằng ứng dụng cần tạo nhiều hơn một instance của đối tượng rdoEnvirment - trừ phi ta cần hỗ trợ nhiều transaction đồng thời trên nhiều kết nối cơ sở dữ liệu. Thay vì tạo một instance mới của đối tượng rdoEnvironment, ta có thể truy cập đối tượng rdoEnvironment hiện hành, rdoEnvironment(0), được tạo bởi đối tượng rdoEngine khi ta lập một tham chiếu đến RDO từ ứng dụng.

Đối tượng rdoEnvironment thuộc về tập hợp rdoEnvironmént và chứa tập hợp gồm các đối tượng rdoConnection:

Hình 23.7 Tập hợp rdoEnvironments và đối tượng rdoEnvironment trong cây phân cấp RDO (Đối tượng dữ liệu từ xa)

15.3.3Thiết lập kết nối dùng đối tượng rdoConnection


Ta dùng đối tượng rdoConnection để thiết lập một kết nối đến server cơ sở dữ liệu từ xa trong RDO. Sau khi ta có một đối tượng rdoConnection hợp lệ, ứng dụng có thể bắt đầu tương tác với cơ sở dữ liệu.

Đối tượng rdoConnection tương tự đối với Database trong lập trình với DAO. Nó cũng tương tự theo một nghĩa nào đó với đối tượng Connetion của ADO.

Đối tượng rdoConnection thuộc về tập hợp rdoConnections và chứa tập hợp các đối tượng rdoQuery, đối tượng rdoResultset, và đối tượng rdoTable.



Hình 23.8 Tập hợp rdoConnections và đối tượng rdoConnection trong cây phân cấp RDO (Đối tượng dữ liệu từ xa)

Để tạo một kết nối dùng đối tượng rdoConnection, ta bắt đầu bằng cách tạo chuỗi kết nối ODBC. Khác với điều khiển Data, ta bỏ qua ODBC; cũng như mệnh đề của chuỗi kết nối của đối tượng rdôCnnection. (Nó ám chỉ rằng vì sử dụng RDO, ta sẽ dùng ODBC).

Dưới đây là danh sách các phần tử thông dụng nhất trong chuỗi kết nối ODBC khi kết nối với SQL Server.


Tham biến

Mô tả

UID

Tên login của người sử dụng

PID

Mật khẩu của người sử dụng

DSN

Tên nguồn dữ liệu ta tạo trong Trình quản lý điều khiển ODBC

DRIVER

Điều khiển ODBC mà ta muốn kết nối

DATABASE

Tên cơ sở dữ liệu mà ta muốn kết nối

APP

Tên ứng dụng kết nối với cơ sở dữ liệu

LANGUAGE

Ngôn ngữ quốc tế được dùng bởi server

SERVER

Tên của SQL Server mà ứng dụng kết nối đến

Tuy nhiên, đây không phải toàn bộ các tham biến. Và không nhất thiết phải dùng tất cả các tham biến này trong mọi trường hợp. Cơ sở dữ liệu có thể sử dụng nhiều hoặc ít hơn.

Ví dụ, để nối đến cơ sở dữ liệu SQL Server Novelty, ta dùng chuỗi kết nối:
DSN = Novelty; UID = randy; PWD = prince

Nếu không cung cấp tên login và mật khẩu của người sử dụng trong chuỗi kết nối, khi ứng dụng nối đến server, trình điều khiển của ODBC sữ hiển thị hộp thoại yêu cầu người sử dụng cung cấp thông tin login.


15.3.3.1Tạo chuỗi kết nối không chứa DSN


Ngoài cách tạo kết nối sử dụng tên nguồn dữ liệu ODBC, ta còn có một tuỳ chọn để tạo một chuỗi kết nối không cần có DSN. Khi đó, chuỗi kết nối bao gồm toàn bộ thông tin cần thiết để login, kể cả tên trình điều khiển ODBC, chẳng hạn như:

Driver = SQL Server; SERVER = bedrock; DATABASE = bedrock; UID = randy; PWD = prince;

Lưu ý rằng, thứ tự các phần tử trong chuỗi không quan trọng, nhưng cách đánh vần là có quan trọng. Một trong những lỗi phổ biến nhất mà nhà lập trình thường gặp khi xây dựng chuỗi là bỏ qua ký tự (chấm phẩy (;) hay ký tự ngoặc cong), hoặc chèn một ký tự lạ (như khoảng trắng trước và sau dấu bằng) trong chuỗi kết nối. ODBC rất kén chọn với định dạng của chuỗi kết nối, vì thế nên thận trọng.

Dùng chuỗi không có DSN trong trường hợp ta không cần điều khiển toàn bộ qua cấu hình phía Client. Nó cũng nhanh hơn một ít khi log vào cơ sở dữ liệu. Bởi vì DSN được chứa trong Registry của Windows, và rất tốn kém truy cập vào đấy.

15.3.3.2Mở cơ sở dữ liệu


Sau khi đã có thông tin cần để thiết lập kết nối đến cơ sở dữ liệu, ta có 2 tuỳ chọn để thiết lập kết nối:

  • Dùng phương thức OpenConnection của đối tượng rdoEnvironment.

  • Dùng phương thức EstablishConnection của đối tượng

Cả hai phương thức đều như nhau, chúng chỉ hoạt động hơi khác nhau một chút.


15.3.3.2.1Dùng phương thức OpenConnection

Option Explicit

' References RDO 2.0

Private MyConn As rdoConnection

Private Sub Form_Load()

Dim strConnect As String

strConnect = "DSN=Novelty;" & _

"PWD=prince;" & _

"UID=randy;"

Set MyConn = rdoEnvironments(0).OpenConnection("Novelty", _

,, strConnect)

End Sub

Phương thức OpenConnection có 5 tham biến : Tham biến thứ nhất, tên nguồn dữ liệu, không phải là tuỳ chọn. Bốn tham biến còn lại (Prompt, Readonly, Connect, và Options) là tuỳ chọn. Điều này giải thích cú pháp lạ của phương thức - tham biến thiếu đặt giữa các dấu phẩy. (Lưu ý rằng đoạn chương trình này tạo ngầm đối tượng rdoEnvironment, tham chiếu đến rdoEnvironment(0), để tạo một kết nối đến cơ sở dữ liệu).



Mặt khác, phương thức EstablishConnection, thực hiện yương tự như OpenConnection. Nhưng nó hoạt động theo cách trực tiếp hơn:

Option Explicit

' References RDO 2.0

Private MyConn As rdoConnection

Private Sub Form_Load()

Dim strConnect As String

strConnect = "DSN=Novelty;" & _

"PWD=prince;" & _

"UID=randy;"

MyConn.EstablishConnection

End Sub

Ví dụ mẫu Tham khảo ví dụ trong đề án projectConnect.vbp trong thư mục \samples\PhanIV\23-rdo\Connect.


15.3.4Đáp ứng sự kiện trong RDO


Đối tượng RDO có khả năng sinh ra sự kiện. Sự kiện còn cho phép ứng dụng thi hành những hành động mất nhiều thời gian (như là kết nối đến cơ sở dữ liệu hay thi hành câu truy vấn) mà không cần giữ điều khiển của ứng dụng. Thay vì chờ cho hành động của RDO xảy ra, ứng dụng có thể làm việc khác cho đến khi kết nối được thiết lập hay truy vấn hoàn tất. Ta gọi đây là thi hành không đồng bộ. Sự kiện là cách thức đối tượng RDO thông báo cho ứng dụng rằng một hoạt động bất đồng bộ vừa hoàn tất.

Để khiến một đối tượng dữ liệu đặc biệt sinh ra sự kiện, ta phải khai báo nó theo cách đặc biệt: dùng từ khoá WithEvents. Ví dụ, khai báo đối tượng rdoConnection có tên là MyConn phát sinh sự kiện, ta dùng dòng lệnh:

Private WithEvents MyConn As rdoConnection

Sau khi khai báo, các sự kiện của nó sẽ xuất hiện trong cửa sổ Code của Visual Basic.





Hình Truy cập thủ tục sự kiện của một đối tượng RDO được khai báo bằng từ khoá WithEvents.

Sau đó, ta có thể viết các thủ tục xử lý sự kiện. Các thủ tục này tương tự thủ tục xử lý sự kiện của các đối tượng cơ bản khác, như thủ tục sự kiện Load của biểu mẫu hoặc thủ tục sự kiện Click của nút lệnh.

Cách dễ thất để minh hoạ cách thức hoạt đọng của các sự kiện RDO là viết một thủ tục thông báo khi một kết nối đến cơ sở dữ liệu được thiết lập.

Option Explicit

‘referene rdo 2.0

WithEvents Myconn As rdoconnection


Private Sub Form_Load()

Set Myconn = New rdoconnection

Myconn.conect = "DSN=novelty;" & _

"PWD=rince;" & _

"UID=randy;"

Myconn.EstablishConnection

End Sub

Private Sub myconn_connect(ByVal ErrorOcurred As Boolean)



If ErrorOcurred Then

MsgBox "There was a problem" & _

"connecing to the database.", vbExclamation

Else


MsgBox "connection established.", vbInformation

End If


End Sub


tải về 1.69 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   31   32   33   34   35   36   37   38   39




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương