Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 12


sql = "UPDATE Course SET DurationInHour = 45 WHERE DurationInHour = 30"

con.Execute sql con.Close

Set con = Nothing

Ví dụ: Xóa các bản ghi thỏa mãn điều kiện

Đoạn mã sau sẽ xóa các bản ghi trong bảng Course thuộc CSDL C:UsersM11x- R3DesktopAccessqldt.accdb thỏa mãn điều kiện CName = “C++”


Dim con As ADODB.Connection Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection con.Open cnstr

Dim sql As String

sql = "DELETE FROM Course WHERE CNAME = „C++‟"

con.Execute sql con.Close

Set con = Nothing

Ví dụ: Lấy một tập các bản ghi

Đoạn mã sau đây sẽ lấy tất cả các bản ghi trong bảng Course thuộc CSDL C:UsersM11x-R3DesktopAccessqldt.accdb rồi viết vào cửa sổ Immediate tên các khóa học, mỗi tên trên một dòng.


Dim con As ADODB.Connection Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection con.Open cnstr

Dim sql As String

sql = "SELECT * FROM Course" Dim rec As New ADODB.Recordset


Set rec = con.Execute(sql) While (Not rec.EOF)

Debug.Print rec.Fields("CName").value rec.MoveNext

Wend con.Close

Set con = Nothing

Phương thức Close

Dùng để đóng một connection đang mở Cú pháp: Connection.Close

Ví dụ: cn.Close

Phương thức BeginTrans

Bắt đầu một giao dịch mới giữa đối tượng Connection và nguồn dữ liệu. Cú pháp:

Tên biến = Connection.BeginTrans

Giá trị trả về khi gọi phương thức này là một số kiểu Long chỉ ra mức độ của giao dịch.

Phương thức CommitTrans

Lưu lại các thay đổi do giao dịch hiện tại sinh ra và kết thúc nó. Cú pháp:

Connection.CommitTrans

Phương thức RollbackTrans

Hủy bỏ các thay đổi do giao dịch hiện tại sinh ra và kết thúc nó. Cú pháp:

Connection.RollbackTrans

Thuộc tính Provider

Là một xâu ký tự chỉ ra tên của provider như trong phương thức Open

Thuộc tính ConnetionString

Là một xâu ký tự chỉ ra chuỗi kết nối như trong phương thức Open

Thuộc tình State

Cho biết trạng thái của Connection là một trong các trạng thái sau:


Hằng trạng thái

Giá trị

Mô tả

adStateClosed

0

Connection bị đóng (closed)

adStateOpen

1

Connection đang mở (opened)

adStateConnecting

2

Connection đang kết nối (connecting)

adStateExecuting

4

Connection đang thi hành một câu lệnh SQL

(executing)

adStateFetching

8

Connection đã tác động được vào các bản ghi

(retrieved)

Có thể bạn quan tâm!

Xem toàn bộ 114 trang tài liệu này.

Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 12

2. Đối tượng Command

Được sử dụng để thi hành câu lệnh SQL.

Một số thuộc tính và phương thức của đối tượng Command

Thuộc tính ActiveConnection

Để thiết lập đối tượng Connection cho Command.

Thuộc tính CommandText

Là một câu lệnh SQL

Phương thức Excute

Để thi hành câu lệnh trong CommandText

Ví dụ: Thêm mới bản ghi

Đoạn mã sau sẽ chèn thêm một bản ghi vào bảng Course(CID, CName, DurationInHour, Description) trong CSDL C:UsersM11x- R3DesktopAccessqldt.accdb


Dim con As ADODB.Connection Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection

con.Open cnstr


Dim sql As String

sql = "INSERT INTO Course (Cname, DurationInHour, Description) VALUES ('C# in advance', 50, 'For immediate student')"

Dim cmd As New ADODB.Command cmd.ActiveConnection = con cmd.CommandText = sql

rec = cmd.Execute con.Close

Set con = Nothing

Ví dụ: Cập nhật bản ghi đã tồn tại với các giá trị mới

Đoạn mã sau đây sẽ thực hiện cập nhật các bản ghi thỏa mãn điều kiện thuộc tính DurationInHour = 30 lên 45 trong bảng Course của CSDL C:UsersM11x- R3DesktopAccessqldt.accdb


Dim con As ADODB.Connection Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection con.Open cnstr

Dim sql As String

sql = "UPDATE Course SET DurationInHour = 45 WHERE DurationInHour = 30"

Dim cmd As New ADODB.Command cmd.ActiveConnection = con cmd.CommandText = sql cmd.Execute

con.Close

Set con = Nothing

Ví dụ: Xóa các bản ghi thỏa mãn điều kiện

Đoạn mã sau sẽ xóa các bản ghi trong bảng Course thuộc CSDL C:UsersM11x- R3DesktopAccessqldt.accdb thỏa mãn điều kiện CName = “C++”


Dim con As ADODB.Connection


Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection con.Open cnstr

Dim sql As String

sql = "DELETE FROM Course WHERE CNAME = „C++‟"

Dim cmd As New ADODB.Command cmd.ActiveConnection = con cmd.CommandText = sql cmd.Execute

con.Close

Set con = Nothing

Ví dụ: Lấy một tập các bản ghi

Đoạn mã sau đây sẽ lấy tất cả các bản ghi trong bảng Course thuộc CSDL C:UsersM11x-R3DesktopAccessqldt.accdb rồi viết vào cửa sổ Immediate tên các khóa học, mỗi tên trên một dòng.


Dim con As ADODB.Connection Dim cnstr As String

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set con = New ADODB.Connection con.Open cnstr

Dim sql As String

sql = "SELECT * FROM Course" Dim rec As New ADODB.Recordset Dim cmd As New ADODB.Command cmd.ActiveConnection = con cmd.CommandText = sql

Set rec = cmd.ExecuteWhile (Not rec.EOF) Debug.Print rec.Fields("CName").value

rec.MoveNext


Wend con.Close

Set con = Nothing

3. Đối tượng Recordset

Chứa một tập các bản ghi của một bảng hoặc là kết quả của câu lệnh SQL được thi hành. Tại bất kỳ thời điểm nào, đối tượng Recordset cũng chỉ tham chiếu đến 1 bản ghi trong tập các bản ghi đó và được gọi là bản ghi hiện thời.

Đối tượng này có các thuộc tính và phương thức tương tự các thuộc tính và phương thức của đối tượng Recordset trong mô hình DAO. Sau đây sẽ minh họa một số ví dụ:

Ví dụ: Thêm mới một bản ghi

Phương thức AddNew và Update

Đoạn mã sau sẽ chèn thêm một bản ghi vào bảng Course(CID, CName, DurationInHour, Description) trong CSDL C:UsersM11x- R3DesktopAccessqldt.accdb


Dim cn As adodb.Connection Dim cnstr

Dim rec As adodb.Recordset

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set cn = New adodb.Connection Set rec = New adodb.Recordset cn.Open cnstr

rec.Open "Course", cn, adOpenDynamic, adLockOptimistic rec.addnew

rec.Fields(“CName”) = “LPI” rec.Fields(“DurationInHour”) = 50 rec.Fields(“Description”) = “Overview of Linux” rec.Update: rec.Close

cn.close: set rec = Nothing

Chú ý:

Phương thức Open của Recordset có 4 tham số lần lượt bao gồm:

- Source: có thể là tên một bảng hoặc một câu lệnh sql SELECT

- ActiveConnection: là một connection đang được mở

- CursorType: kiểu con trỏ của bản ghi cho phép con trỏ chỉ đọc một chiều hay hai chiều, …

- LockType: là kiểu khóa, cho phép có được ghi hay chỉ đọc record, …

Trong ví dụ trên: CursorType = adOpenDynamic có nghĩa là con trỏ bản ghi có thể dịch chuyển cả hai chiều (MoveNext, MovePrevious, MoveLast, MoveFirst đều được); LockType = adLockOptimistic, nghĩa là recordset được phép cả đọc và ghi.

Ví dụ: Cập nhật bản ghi đã tồn tại với các giá trị mới Phương thức Update

Đoạn mã sau đây sẽ thực hiện cập nhật các bản ghi thỏa mãn điều kiện thuộc tính DurationInHour = 30 lên 45 trong bảng Course của CSDL C:UsersM11x- R3DesktopAccessqldt.accdb


Dim cn As adodb.Connection Dim cnstr, sql

Dim rec As adodb.Recordset

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:UsersM11x-R3DesktopAccessqldt.accdb; Persist Security Info=False"

Set cn = New adodb.Connection Set rec = New adodb.Recordset cn.Open cnstr

Sql = “SELECT * FROM Course WHERE DurationInHour =30” rec.Open sql, cn, adOpenDynamic, adLockOptimistic while (not rec.EOf)

rec.Fields(“DurationInHour”) = 45

rec.Update rec.moveNext

wend

rec.Close: cn.Close: set cn = Nothing

Ví dụ: Xóa các bản ghi thỏa mãn điều kiện

Đoạn mã sau sẽ xóa các bản ghi trong bảng Course thuộc CSDL C:UsersM11x- R3DesktopAccessqldt.accdb thỏa mãn điều kiện CName = “C++”


Dim cn As adodb.Connection Dim cnstr, sql

Dim rec As adodb.Recordset

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source =

C:UsersM11x-R3DesktopAccessqldt.accdb; Info=False"

Set cn = New adodb.Connection Set rec = New adodb.Recordset

cn.Open cnstr

Persist

Security

sql = “SELECT * FROM Course WHERE CName =‟C++‟” rec.Open sql, cn, adOpenDynamic, adLockOptimistic while (not rec.EOf)

rec.Delete rec.moveNext

wend

rec.Close: cn.Close: set cn = Nothing

Ví dụ: Lấy một tập các bản ghi

Đoạn mã sau đây sẽ lấy tất cả các bản ghi trong bảng Course thuộc CSDL C:UsersM11x-R3DesktopAccessqldt.accdb rồi viết vào cửa sổ Immediate tên các khóa học, mỗi tên trên một dòng.


Dim cn As adodb.Connection Dim cnstr, sql

Dim rec As adodb.Recordset

cnstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data source =

C:UsersM11x-R3DesktopAccessqldt.accdb; Info=False"

Set cn = New adodb.Connection Set rec = New adodb.Recordset cn.Open cnstr

sql = "SELECT * FROM Course" rec.Open sql, cn

While Not rec.EOF

Debug.Print rec.Fields(“CName”)

rec.MoveNext

Persist

Security

Xem tất cả 114 trang.

Ngày đăng: 19/01/2024
Trang chủ Tài liệu miễn phí