• Thứ Hai, 19/03/2007 14:04 (GMT+7)

    Hướng dẫn về VB.NET và SQL Server 2000:

    Câu hỏi :
    Xin hướng dẫn về VB.NET và SQL Server 2000

    Trên SQL 2000 có một table là tbl_USER_ID, có 2 field là Tai_khoan và Mat_khau (Data Type là Char); trên VB.NET tôi tạo một Form tên frm_Log_In, có 2 Textbox là txtUser_ID và txtPass_ID, và 2 Button là btnChap_nhan và btnKet_thuc. Xin hướng dẫn viết code truy cập CSDL. Ví dụ: Khi frm_Log_In xuất hiện, sau khi nhập tài khoản và mật khẩu, nhấn btnChap_nhan, nếu kiểm tra đúng trong tbl_USER_ID thì sẽ chạy form chính (MainForm) của chương trình, còn nếu nhập sai thì yêu cầu nhập lại lần nữa, nếu vẫn còn sai thì thoát? 
      

    Trả lời :
    Bạn có thể dùng các đối tượng ODBC .Net như OdbcConnection, OdbcCommand, OdbcDataReader... để truy xuất database. Để kiểm soát và chỉ cho user nhập thông tin account tối đa 2 lần, bạn có thể dùng biến "NumInput", lúc đầu bằng 0, mỗi lần user nhập thông tin account vào form, bạn tăng biến lên 1 đơn vị, nếu đủ số lần qui định thì dừng chương trình. Cụ thể, với form login và các đối tượng trong form như bạn miêu tả, code của thủ tục btnChap_nhan_Click() có thể được viết như sau để kiểm soát việc login vào ứng dụng:
     Private Sub btnChap_nhan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChap_nhan.Click
     'Connection string dùng DSN và ODBC Provider
     Dim MyConString As String = "DSN=MyDatabase"
     'hoặc Connection string dùng trực tiếp Provider Microsoft.Jet.OLEDB
     'MyConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\data\MyDatabase.mdb"
     Try
     'tạo 1 connection đến database
     Dim MyConnection As New OdbcConnection(MyConString)
     MyConnection.Open()
     
     'Tạo 1 đối tượng Command
     Dim MyCommand As New OdbcCommand
     MyCommand.Connection = MyConnection
     'xây dựng lệnh SQL kiểm tra
     MyCommand.CommandText = "Select * from tbl_USER_ID where Tai_khoan='" + txtUser_ID.Text + "' and Mat_khau='" + txtPass_ID.Text + "'"
     'Tạo 1 đối tượng DataReader chứa kết quả
     Dim MyDataReader As System.Data.Odbc.OdbcDataReader
     MyDataReader = MyCommand.ExecuteReader
     If MyDataReader.Read Then
     'trường hợp nhập đúng account
     'tạo biến form MainForm và hiển thị nó
     Dim mf As New MainForm
     Me.Finalize()
     mf.Show()
     Else 'nếu không nhập đúng, kiểm tra số lần
     NumInput = NumInput + 1
     If NumInput < 2 Then
     txtUser_ID.Text = ""
     txtPass_ID.Text = ""
     Me.Text = "Hãy nhập lại thông tin account"
     Else
     MsgBox("Bạn đã nhập sai 2 lần, không giao tiếp với bạn nữa!")
     Me.Finalize()
     End If
     End If
     'Catch ODBC Exception
     Catch MyOdbcException As OdbcException
     MsgBox(MyOdbcException.ToString)
     'Catch program exception
     Catch MyException As Exception
     MsgBox(MyException.ToString)
     End Try
     End Sub
     Hai lưu ý khi dùng đoạn code trên:
     1. Bạn phải định nghĩa biến NumInput như là thuộc tính của class frm_Log_In (class miêu tả form login) và phải khởi động giá trị bằng lệnh gán:
     NumInput = 0
     ở cuối thủ tục InitializeComponent() của class frm_Log_In.
     2. Bạn phải vào Control Panel, chạy icon "Administrator Tools.Data Source", chọn tab "System DSN", chọn button Add để đặc tả DSN MyDatabase miêu tả database chứa table tbl_USER_ID (table chứa các thông tin account đăng nhập). 
    Chuyên mục: Cơ sở dữ liệu