Imports System.IO docx

10 223 1
Imports System.IO docx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Imports System.IO Public  Form1   Button1_Click( sender  System.Object,  e  System.EventArgs)  Button1.Click  sDBFile   =   sBackUpFile   =  !" ' Backup *.mdb database #$ File.Exists(sDBFile) %&  db  '( DAO.DBEngine )*"&(*"+*"*$*"& *"& db.CompactDatabase(sDBFile, sBackUpFile)  #$ 'Restore&*,$*&*", #$ File.Exists(sBackUpFile) %& File.Copy(sBackUpFile, sDBFile, %)  #$   End  . 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, B yVal 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, ByVal 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)" 17. 'Nap tham so cho các command trên 18. commandInsert.Parameters.Add("@STT", OleDbType.Numeric, 50, "STT") ' Nạp giá trị cho tham số @STT thông qua giá trị của cột nguồn STT 19. commandInsert.Parameters.Add("@Name", OleDbType.VarChar, 50, "Name") 20. commandInsert.Parameters.Add("@Address", OleDbType.VarChar, 50,"Address") 21. commandInsert.Parameters.Add("@Phone", OleDbType.VarChar, 50, "Phone") 22. commandInsert.Parameters.Add("@Email", OleDbType.VarChar, 50, "Email") 23. 'Dùng da để áp đặt sự thay đổi trên vào File data nguồn 24. da.InsertCommand = commandInsert 'gán command 25. da.Update(dt) 26. 27. End Sub 9. Update (chỉnh sửa một Record) Để chính sửa một Record thì trước tiên bạn phải xác định được Record đó ở đâu trong Database cái đã > Xác định nó thông qua Primary Key. Ví dụ bạn có giao diện như sau Bạn thấy rằng ta có Primary key ở đây là STT, và khi bạn click vào DataGridview là ta đã lấy được thông tin của Record hiện thời rồi. Vậy đoạn code để Update một record như sau Mã: Chọn tất cả 1. Private Sub btnUpdate_Click(ByVal sender As System.Object , ByVal e AsSystem.EventArgs) Handles btnUpdate.Click 2. 'Get Record can update trong Table 3. Dim row As DataRow = dt.Select("STT = '" & Convert.ToInt32(txtSTT.Text) &"'")(0) 4. 'Update row 5. row.BeginEdit() 6. row("Name") = txtName.Text 7. row("Address") = txtAddress.Text 8. row("Phone") = txtPhone.Text 9. row("Email") = txtEmail.Text 10. row.EndEdit() 11. 'Tao command để update sự thay đổi trên vào file data nguồn 12. Dim commandUpdate As New OleDbCommand() 13. commandUpdate.Connection = con 14. commandUpdate.CommandType = CommandType.Text 15. 'SQL for Update 16. commandUpdate.CommandText = "Update DanhsachSV Set Name=@Name, Address=@Address, Phone=@Phone, Email=@Email Where STT=@STT" 17. 'Nap tham so cho các command trên 18. commandUpdate.Parameters.Add("@Name", OleDbType.VarChar, 20, "Name") 19. commandUpdate.Parameters.Add("@Address", OleDbType.VarChar, 20,"Address") 20. commandUpdate.Parameters.Add("@Phone", OleDbType.VarChar, 20, "Phone") 21. commandUpdate.Parameters.Add("@Email", OleDbType.VarChar, 20, "Email") 22. commandUpdate.Parameters.Add("@STT", OleDbType.Integer, 20, "STT") 23. 'Dùng da để áp đặt sự thay đổi trên vào File data nguồn 24. da.UpdateCommand = commandUpdate 'gán command 25. 'Dim a As New OleDbCommandBuilder(da) 26. da.Update(dt) 27. End Sub 10. Delete 1 Record - Xóa một Record cũng tương tự như Update chỉ khác phần SQL và tham số . - Đây là cái dễ nhất Mã: Chọn tất cả 1. Private Sub btnDelete_Click(ByVal sender As System.Object , ByVal e AsSystem.EventArgs) Handles btnDelete.Click 2. 'Get Record can update trong Table 3. Dim row As DataRow = dt.Select("STT = '" & Convert.ToInt32(txtSTT.Text) &"'")(0) 4. row.BeginEdit() 5. row.Delete() 6. row.EndEdit() 7. 'Tao command để update sự thay đổi trên vào file data nguồn 8. Dim commandDelete As New OleDbCommand() 9. commandDelete.Connection = con 10. commandDelete.CommandType = CommandType.Text 11. 'SQL for Delete 12. commandDelete.CommandText = "Delete From DanhsachSV Where STT=@STT" 13. 'Nap tham so cho các command trên 14. commandDelete.Parameters.Add("@STT", OleDbType.Numeric, 20, "STT") 15. 'Dùng da để áp đặt sự thay đổi trên vào File data nguồn 16. da.DeleteCommand = commandDelete 'gán command 17. End Sub 18. - Chú ý : Để xóa hết tất cả Record trong bản ta chỉ cần dùng SQL sau “Delete From DanhsachSV” . Các bạn thấy ko có còn tham số nào cả > ko cần truyền thêm giá trị gì cả 11. Insert, Update, Delete theo kiểu Mì Ăn Liền - Chắc các bạn đều thấy rằng, trong các phần Insert, Update, Delete ở trên khá phức tạp đòi hỏi phải luyện tập thường xuyên mới có thể thành thạo cũng như nắm vững SQL. - Do đó, Net cung cấp sẵn cho ta một đối tượng cho phép ta ko cần phải mất công sức để viết lại những cái trên - áp dụng tốt cho đa số trường hợp nhưng tốc độ dĩ nhiên là kém hơn cách viết trên một chút. Đơn giản các bạn chỉ cần thêm một dòng code này vào và loại bỏ tất cả các command Insert, Update, Delete. Ví dụ Update: các bạn sẽ thấy quá trình sẽ đơn giản đi rất nhiều Mã: Chọn tất cả 1. Dim MiAnLien As New OleDbCommandBuilder(da) ' Nó ở đây nè sẽ làm giúp ta làm mọi việc 2. 'Get Record can update trong Table 3. Dim row As DataRow = dt.Select("STT = " & Convert.ToInt32(txtSTT.Text))(0) 4. 'Update row 5. row.BeginEdit() 6. row("Name") = txtName.Text 7. row("Address") = txtAddress.Text 8. row("Phone") = txtPhone.Text 9. row("Email") = txtEmail.Text 10. row.EndEdit() 11. ‘Update dữ liệu 12. da.Update(dt) 13. - Insert, Delete thì cũng tương tự thôi, các bạn hãy tự làm. 12. Gọi thực thi một Query có sẵn trong file Access - Ví dụ bạn mở file access của bạn ra click vào Tab Queries và viết một Query tên là QuerySelect (xin nhắc lại query này ở trong file access ko phải ta viết ở trong chương trình) Mã: Chọn tất cả 1. SELECT * 2. FROM DanhsachSV 3. WHERE STT>[@STT]; 4. - Bạn đang thắc mắc là làm sao ta có thể gọi thực thi query này từ chương trình và nhận kết quả trả về từ nó, cũng như làm sao nạp giá trị cho tham số @STT trong query trên - Để làm điều này thật đơn giản, ta dùng command mà thôi Mã: Chọn tất cả 1. Private Sub btnQuery_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnQuery.Click 2. Dim command As New OleDbCommand() 3. command.Connection = con 4. command.CommandType = CommandType.StoredProcedure ' Xác định ta đang gọi query trong file access 5. command.CommandText = "QuerySelect" 'Tên của Query 6. command.Parameters.Add("@STT", OleDbType.Numeric).Value = 5 'Nạp giá trị cho tham số @STT 7. 'Nạp command trên vào DataAdapter tùy theo dạng của command là Select, insert, update hay delete 8. da.SelectCommand = command 9. dt.Clear() 'Xóa dữ liệu cũ 10. da.Fill(dt) 11. DataGridView1.DataSource = dt 12. End Sub 13. s . Imports System. IO Public  Form1   Button1_Click( sender  System. Object,  e  System. EventArgs)  Button1.Click . 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. đơ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

Ngày đăng: 08/08/2014, 10:21

Tài liệu cùng người dùng

Tài liệu liên quan