
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Butto
n1.Click
Dim sDBFile As String = "E:\myDB.mdb"
Dim sBackUpFile As String = "E:\myDB_BackUp.mdb"
' Backup *.mdb database
If File.Exists(sDBFile) Then
Dim db As New DAO.DBEngine
'CompactDatabase has two parameters, creates a copy of compact DB at the Destination path
db.CompactDatabase(sDBFile, sBackUpFile)
End If
'Restore the original file from the compacted file
If File.Exists(sBackUpFile) Then
File.Copy(sBackUpFile, sDBFile, True)
End If
End Sub
End Class
. Access tuy cũng là hệ quản trị cơ sở dữ liệu nhưng nó khác với SQL Server là nó còn cho phép xây dựng thành
phần giao diện gồm chung với dữ liệu + các xử lý khác trong cùng tập tin .mdb. Nó nói chung là không phân biệt xử lý
client - server.
2. Nếu cẩn thận và chuyên nghiêp hơn ta có thể tách làm 2 phần: 1 tập tin chứa dữ liệu và các truy vấn mang tính
tiền xử lý và 1 tập tin chứa thành thành giao diện + các xử lý khác. Với cách làm này ta chỉ cần sao chép dự phòng
đối với tập tin thứ nhất.
3. Sao chép dự phòng đối với Access thật ra chỉ là thao tác copy tập tin.
4. Trong VB.Net có thể viết đoạn mã lệnh đơn giản như sau (Tôi ví dụ minh hoạ bằng ứng dụng loại Console cho đơn
giản trình bày)
Imports System.IO
Module Module1

Sub Main()
Dim f As FileInfo = New FileInfo("C:\Pro_TamHiep.mdb")
f.CopyTo("c:\Pro_TamHiep.bak")
End Sub
End Module
Access không có chức năng restore đúng nghĩa như các hệ quản trị cơ sở dữ liệu cao cấp hơn nó như SQL Server,
Oracle....
Tuy nhiên nó có hỗ trợ chức năng tự sửa (menu --> tools --> database utilities --> compact and repair database). Nếu
tự sửa vẫn không được thì đành lấy bản đã sao chép thay thế bản bị hư.
1. Tìm hi u v khái ni m ADO.Netể ề ệ
Trong Net (VB.Net và C#) ch t n t i khái ni m ADO.Net ch ko t n t i khái ni m cũỉ ồ ạ ệ ứ ồ ạ ệ
ADO (c a VB6.)ủ
Các b n có th th y đ c ADO.Net Model qua hình d i đây. Có th di n đ t theoạ ể ấ ượ ướ ể ễ ạ
th t làứ ự
Database--> Conection--> Command--> DataAdapter--> Datatable hay Dataset và các
b n làm vi c theo th t này.ạ ệ ứ ự
2. Namespace c n thi t đ thao tác v i Accessầ ế ể ớ
Đ thao tác v i Access ta ch c n Imports các namespace sau đâyể ớ ỉ ầ
Mã: Ch n t t cọ ấ ả
1. Imports System.Data
2. Imports System.Data.OleDb 's d ng v i accessử ụ ớ
3.
3. Connect v i Databaseớ
Mu n thao tác v i Database dĩ nhiên b c đ u tiên là ph i t o Connect cho nó.ố ớ ướ ầ ả ạ
Ta t o nh sau:ạ ư
- Connect có t m v c c c b trong Form c n khai báoầ ự ụ ộ ầ
Ví d file c n k t n i làụ ầ ế ố SolieuTest.mdb đ c đ t trong th m c Debug và cóượ ặ ư ụ
Password là 123456.
Mã: Ch n t t cọ ấ ả
1. Public Class Form1
2. Dim con As OleDbConnection ' C c b trong Formụ ộ
3.
Private Sub Form1_Load(ByVal sender As System.Object, By
Val e AsSystem.EventArgs) Handles MyBase.Load

4. Dim str As String = "Provider=
Microsoft.Jet.OLEDB.4.0;" _
5. & "Data Source = " &
Application.StartupPath & "\SolieuTest.mdb;"_
6. & "Jet OLEDB:Database Password = 123456"
7. con = New OleDbConnection(str)
8. con.Open()
9. End Sub
10. ...................................
4. Command ( L nh ):ệ
- Đ cho ch ng trình bi t ta c n làm nh ng gì đ i v i Database nh select.ể ươ ế ầ ữ ố ớ ư
Insert.................
- Ví d đây là command dùng đ Select h t t t c d li u trong b ng ra.ụ ể ế ấ ả ữ ệ ả
Mã: Ch n t t cọ ấ ả
1. Dim command As New OleDbCommand()
2. command.Connection = con ' K t n iế ố
3. command.CommandType = CommandType.Text 'Lo i l nhạ ệ
s d ng là Text hay là m t query trong accessử ụ ộ
4. command.CommandText = "Select * From
DanhsachSV" 'L nh c n làm v i Databaseệ ầ ớ
5.
- Đ s d ng commnand đ c t t các b n c n ph i n m v ng ngôn ng SQL (trongể ử ụ ượ ố ạ ầ ả ắ ữ ữ
Box ebook có nhi u sách v SQL)ề ề
- N p tham s cho command --> Very very Important. Ví dạ ố ụ
Mã: Ch n t t cọ ấ ả
1. command.CommandText = "Select * From DanhsachSV Where Name
= @Name"
đây ta cóỞ @Name là tham s mà ta c n ph i đi n giá tr cho nó, ta gán giá tr nhố ầ ả ề ị ị ư
sau
Mã: Ch n t t cọ ấ ả
1. commandInsert.Parameters.Add("@Name",
OleDbType.VarChar).Value = txtName.Text
V y là ta đã gán giá tr t Textbox txtName vào tham sậ ị ừ ố @Name r i đóồ
5. DataAdapter và Dataset, DataTable
- Chúng ta đã có Connect và commnand r i, gi chúng ta c n có m t cái máy sồ ờ ầ ộ ử
d ng nh ng cái trên đ th c thi l nh mà ta đ a ra --> Đó chính là DataAdapter.ụ ữ ể ự ệ ư
- Khai báo m t DataAdapter ch đ n gi n th nàyộ ỉ ơ ả ế
Mã: Ch n t t cọ ấ ả
1. Dim adapter As New OleDbDataAdapter()

Ngoài ra còn các hình th c kh i t o khác, nh ng ch đ c xài v i các lo i commandứ ở ạ ư ỉ ượ ớ ạ
thu c d ng Select và tùy theo cách mà chúng ta c m th y quen thu c nh tộ ạ ả ấ ộ ấ
Mã: Ch n t t cọ ấ ả
1. OleDbDataAdapter (OleDbCommand)
2. OleDbDataAdapter (StringSelect, OleDbConnection)
3. OleDbDataAdapter (StringSelect, StringConnect)
4.
- Sau khi th c hi n l nh, chúng ta s có đ c k t qu tr v và nó đ c l u trongự ệ ệ ẽ ượ ế ả ả ề ượ ư
DataTable (đ i di n cho m t table ) và DataSet ( đ i di n cho m t Table Collection).ạ ệ ộ ạ ệ ộ
- L u ý:ư Mu n làm thay đ i d li u ngu n (trên file) thì ta ph i tác đ ng vào cácố ổ ữ ệ ồ ả ộ
DataTable hay Dataset đ ng th i cung c p thêm các câu SQL t ng ng đ th c thiồ ờ ấ ươ ứ ể ự
s thay đ i đó. Chúng ta s nói chi ti t v v n đ này trong ph n t i.ự ổ ẽ ế ề ấ ề ầ ớ
6. Select d li uữ ệ
- Đ cho đ n gi n trong quá trình h c các đ i t ng sau dt và da b n cho nó có t mể ơ ả ọ ố ượ ạ ầ
v c c c b trong form (n m chung v i v trí t o connect)ự ụ ộ ằ ớ ị ạ
Mã: Ch n t t cọ ấ ả
1. 'T o m t đ i t ng Datatable nh n d li u tr vạ ộ ố ượ ậ ữ ệ ả ề
2. Dim dt As New DataTable("DanhsachSV")
3. 'T o b máy DataAdapter th c hi n commandạ ộ ự ệ
4. Dim da As New OleDbDataAdapter()
- Đ trích xu t m t d li u ra chúng ta dùng đo n code sauể ấ ộ ữ ệ ạ
- đây chúng ta xét tr ng h p là đã có s n đo n code t o Connect trên r iỞ ườ ợ ẵ ạ ạ ở ồ
Mã: Ch n t t cọ ấ ả
1. Private Sub btnLoad_Click(ByVal sender As System.Object, B
yVal e AsSystem.EventArgs) Handles btnLoad.Click
2. 'T o command đ l y d li u ra ngoàiạ ể ấ ữ ệ
3. Dim command As New OleDbCommand()
4. command.Connection = con ' K t n iế ố
5. command.CommandType = CommandType.Text 'lo i l nhạ ệ
s d ng là Text hay là m t query trong accessử ụ ộ
6. command.CommandText = "Select * From DanhsachSV"
7. da.SelectCommand = command ‘ gán command cho da
8. da.Fill(dt) 'N p d li u vào Tableạ ữ ệ
9. DataGridView1.DataSource = dt 'Load d li u lênữ ệ
DataGridview
10.
11. End Sub
12.

7. Data Binding
- Đôi khi chúng ta th y c n k t h p DataGridview và các Textbox, đ khi chúng taấ ầ ế ợ ể
click vào m t hàng b t kỳ nào trên DataGridview thì d li u c a hàng đó s hi n lênộ ấ ữ ệ ủ ẽ ệ
Textbox. Đó là k thu t Data Binding.ỹ ậ
- Thêm đo n code sau vào sau đo n code select trên các b n s th y hi u quạ ạ ở ạ ẽ ấ ệ ả
ngay.
Mã: Ch n t t cọ ấ ả
1. 'Databinding
2. txtSTT.DataBindings.Add("Text", dt, "STT") ‘ đâyỞ
ta c n binding textbox txtSTT v i giá tr Text c t STTầ ớ ị ở ộ
c a Tableủ
3. txtName.DataBindings.Add("Text", dt, "Name")
4. txtAdress.DataBindings.Add("Text", dt, "Address")
5. txtPhone.DataBindings.Add("Text", dt, "Phone")
6. txtEmail.DataBindings.Add("Text", dt, "Email")
7.
8. Insert m t Row m i vào trong Tableộ ớ
- Đ insert m t Row m i vào File data tr c h t ta c n thêm m t dòng m i vàoể ộ ớ ướ ế ầ ộ ớ
DataTable hay DataSet.
Mã: Ch n t t cọ ấ ả
1. Private Sub btnInsert_Click(ByVal sender As System.Object,
ByVal e AsSystem.EventArgs) Handles btnInsert.Click
2. 'Tao 1 row moi theo c u trúc row trong dtấ
3. Dim row As DataRow = dt.NewRow()
4. row("STT") = txtSTT.Text
5. row("Name") = txtName.Text
6. row("Address") = txtAdress.Text
7. row("Phone") = txtPhone.Text
8. row("Email") = txtEmail.Text
9. dt.Rows.Add(row) ' add row m i này vào dtớ
10. DataGridView1.DataSource = dt
11. 'Tao command đ update s thay đ i trên vào fileể ự ổ
data ngu nồ
12. Dim commandInsert As New OleDbCommand()
13. commandInsert.Connection = con
14. commandInsert.CommandType = CommandType.Text
15. 'SQL for Insert
16. commandInsert.CommandText = "Insert Into
DanhsachSV Values (@STT,@Name,@Address,@Phone,@Email)"