" />
  • Thứ Ba, 21/08/2007 08:53 (GMT+7)

    Tạo form nhập liệu bằng VB.NET

    Câu hỏi :
    Xin hướng dẫn cách tạo form nhập thông tin vào cơ sở dữ liệu *.mdb bằng Visual Basic .NET như sau:
     - Form gồm 2 text box (Họ, Tên) và 3 button (Nhập, Thay đổi, Xóa)
     - File CSDL vidu.mdb có 1 table tên là dshocsinh gồm 2 field là HO và TEN
     - Nhập thông tin vào 2 text box trên, sau đó nhấn nút "Nhập", chương trình sẽ ghi dữ liệu vào file CSDL, tương ứng với 2 field HO và TEN. Tương tự như thế với nút lệnh Thay đổi và Xóa.


    Trả lời :
    Để truy xuất database trong VB .Net (hay VC#, VJ#), bạn có thể dùng các đối tượng ODBC .Net như sau: OdbcConnection, OdbcCommand, OdbcDataReader. Qui trình điển hình để xây dựng ứng dụng xử lý datbase theo yêu cầu của bạn như sau:

     1. Dùng Access (hay bất kỳ ứng dụng nào) tạo file database (thí dụ tên là c:\vidu.mdb) có chứa ít nhất 1 table tên là dshocsinh, mỗi record của table này có 3 field: codeID, Ho, Ten. Lưu ý chúng tôi thêm field codeID để làm khóa chính, vì field "Họ" hay field "Tên" không thích hợp với vai trò khóa chính.

     2. Chạy Control panel.Administrator Tools.Data Source.System DSN.Add và định nghĩa 1 DSN với tên là "DSNVidu" liên kết với file c:\vudu.mdb vừa tạo được ở bước 1.

     3. Chạy Microsoft Visual Studio 200x, tạo 1 project VB .Net mới rồi thiết kế trực quan Form ứng dụng như sau:

     3 textbox có tên lần lượt là txtCodeID, txtHo, txtTen. 4 button lệnh có tên lần lượt là btnAdd, btnUpdate, btnDelete, btnExit.

     4. Tạo các thủ tục xử lý sự kiện click chuột vào 4 button lệnh rồi viết code cho chúng trong Form như sau:
     'nhập thư viện ODBC .Net
     Imports System.Data.Odbc
     'code của Form ứng dụng
     Public Class Form1
     'khai báo các thuộc tính cần dùng
     Dim MyConString As String
     Dim MyConnection As OdbcConnection
     Dim MyCommand As OdbcCommand
     Dim MyDataReader As OdbcDataReader
     
     ' thủ tục khởi động form
     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     Try
     'Connection string dùng DSN và ODBC Provider
     MyConString = "DSN=DSNVidu"
     'hoặc Connection string dùng trực tiếp Provider Microsoft.Jet.OLEDB
     'MyConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\vidu.mdb"
     'tạo 1 connection đến database
     MyConnection = New OdbcConnection(MyConString)
     MyConnection.Open()
     
     'Tạo đối tượng Command kết hợp với database
     MyCommand = New OdbcCommand
     MyCommand.Connection = MyConnection
     'Catch ODBC Exception
     Catch MyOdbcException As OdbcException
     MsgBox(MyOdbcException.ToString)
     
     'Catch program exception
     Catch MyException As Exception
     MsgBox(MyException.ToString)
     End Try
     End Sub
     
     ' thủ tục click button Nhập
     Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNhap.Click
     MyCommand.CommandText = "SELECT * FROM dshocsinh where CodeId = '" & txtCodeID.Text & "'"
     MyDataReader = MyCommand.ExecuteReader()
     'kiểm tra xem CodeID cần thêm có chưa
     If Not MyDataReader.Read() Then
     'Nếu chưa có thì thêm 1 record mới
     MyDataReader.Close()
     MyCommand.CommandText = "INSERT INTO dshocsinh VALUES('" & txtCodeID.Text & "','" & txtHo.Text & "','" & txtTen.Text & "')"
     MyCommand.ExecuteNonQuery()
     Else
     MsgBox "CodeID đã có rồi, hãy thay đổi giá trị khác"
     End If
     MyDataReader.Close()
     End Sub
     
     ' thủ tục cập nhật record
     Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
     'kiểm tra xem CodeID cần cập nhật có chưa
     MyCommand.CommandText = "SELECT * FROM dshocsinh where CodeId = '" & txtCodeID.Text & "'"
     MyDataReader = MyCommand.ExecuteReader()
     If MyDataReader.Read() Then
     'nếu có rồi thì cập nhật record tương ứng
     MyDataReader.Close()
     MyCommand.CommandText = "UPDATE dshocsinh SET Ho='" & txtHo.Text & "', Ten='" & txtTen.Text & "' " & "WHERE codeID = '" & txtCodeID.Text & "'"
     MyCommand.ExecuteNonQuery()
     Else
     MsgBox "CodeID chưa tồn tại, không thể cập nhật record"
     End If
     MyDataReader.Close()
     End Sub
     
     ' thủ tục xóa record
     Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDelete.Click
     'kiểm tra xem CodeID cần xóa có chưa
     MyCommand.CommandText = "SELECT * FROM dshocsinh where CodeId = '" & txtCodeID.Text & "'"
     MyDataReader = MyCommand.ExecuteReader()
     If MyDataReader.Read() Then
     'nếu có thì delete record tương ứng
     MyDataReader.Close()
     MyCommand.CommandText = "Delete from dshocsinh WHERE codeID = '" & txtCodeID.Text & "'"
     MyCommand.ExecuteNonQuery()
     Else
     MsgBox "CodeID chưa tồn tại, không thể xóa record"
     End If
     MyDataReader.Close()
     End Sub
     
     ' thủ tục đóng Form (dừng ứng dụng)
     Private Sub btnExit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExit.Click
     MyConnection.Close()
     End Sub
     End Class
     5. Chạy thử ứng dụng bằng menu Debug.Start Debugging, nếu không có lỗi thì chương trình sẽ đáp ứng đúng theo yêu cầu của bạn. Lưu ý rằng để xóa 1 record, bạn chỉ cần nhập vào thông tin khóa chính của record đó (trong trường hợp của bạn là CodeID).
    Chuyên mục: Cơ sở dữ liệu