Chỉ mình code nút Thoát để có thể thoát hoàn toàn VB nhé Code tham khảo, sử dụng csdl access Private con As OleDbConnection Dim dt As New DataTable"login" Dim da As New OleDbDataAdapte
Trang 1Bạn nào chỉ mình viết form đăng nhập sử dụng csdl với.
Khi đăng nhập vào được rồi thì đóng form đăng nhập lại thế nào?
Chỉ mình code nút Thoát để có thể thoát hoàn toàn VB nhé
Code tham khảo, sử dụng csdl access
Private con As OleDbConnection
Dim dt As New DataTable("login")
Dim da As New OleDbDataAdapter()
Private Sub ket_noi()
Dim cn As String = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Application.StartupPath() & "\csdlnhahang.mdb;" & "Persist Security Info=False"
Try
con = New OleDbConnection(cn)
con.Open()
Catch ex As Exception
MessageBox.Show("Don't connect to database", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub cmdlogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdlogin.Click
Dim command As New OleDbCommand()
command.Connection = con
command.CommandType = CommandType.Text
command.CommandText = "Select * From login Where (Name ='" & txtname.Text & "') And (Pass ='" & txtpass.Text & "')"
da.SelectCommand = command
da.Fill(dt)
If dt.Rows.Count > 0 Then
frmquanlynhahang.Show()
frmquanlynhahang.cmdtamdung.Text = "Tạm dừng làm việc" frmquanlynhahang.MenuStrip1.Enabled = True
frmquanlynhahang.grchung.Enabled = True
Me.Hide()
frmquanlynhahang.lbuser.Text = ">>> Bạn đã đăng nhập với tài khoản: " & txtname.Text & " (*._.* Chúc bạn một ngày làm việc tốt lành
*._.*)"
txtpass.Text = ""
Trang 2Else
If (MessageBox.Show("Sai thong tin dang nhap, xin moi dang nhap lai!", "Thông báo", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning) = Windows.Forms.DialogResult.OK) Then txtname.Focus()
Else
Me.Close()
Global.System.Windows.Forms.Application.Exit()
End If
End If
dt.Clear()
End Sub
bài 2 Bài thực hành VB.net số 1 và 2
SATURDAY, 27 SEPTEMBER 2008, 13:18:32
đây là cách hướng dẫn các bạn thực hành VB.net với CSDL SQL , các bạn đọc và làm theo nhé , mình không post bài lên là vì nếu như thế các bạn sẽ lười không chịu học
phần 1 tạo form đăng nhập :
theo yêu cầu của thày là các bạn phải tạo 1 form đăng nhập CSDL trước bằng cách dùng file app.config nhưng theo Hiếu như thế thì sẽ không linh động các bạn làm theo cách sau :
trước tiên các bạn tạo một module có các thuộc tính sau :
-Module -Module1
Public gscon As String
Public user, pass, group
End Module
-sau đó các bạn tạo một form đăng nhập có hình dạng như -sau :
Trang 3sau khi tạo form có hình dạng như thế này các bạn tạo một form đăng nhập thứ 2 là form đăng nhập người dùng :
tiếp đó các bạn tạo form frmmain có hình dạng như sau ( lưu ý hình nền do các bạn tự chọn tôi để chế độ mặc định )
bây giơ chúng ta vào việc viết code
nội dung code như sau :
trước tiên chúng ta viết code cho nút connect trong form đăng nhập CSDL
Trang 4như sau :
ta thêm khai báo không gian sử dụng vào
-Imports System.Data
Imports System.Data.SqlClient
-nội dung của nút connect nh sau :
-Dim mycon As SqlConnection
Dim str As String
str = " server=" & TextBox1.Text
str += ";database=" & TextBox2.Text
If TextBox3.Text = "" Or TextBox4.Text = "" Then
str += ";integrated security=SSPI"
Else
str += ";uid=" & TextBox3.Text
str += ";pwd=" & TextBox4.Text
End If
gscon = str
mycon = New SqlConnection
mycon.ConnectionString = str
Try
mycon.Open()
If mycon.State <> ConnectionState.Closed Then
myForm = New LoginForm1
myForm.Show()
Else
MsgBox("thong so sai " & TextBox1.Text & vbCrLf & TextBox2.Text & vbCrLf & TextBox3.Text & vbCrLf & TextBox4.Text)
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
-như vậy là chúng ta đã kết nối tới CSDL vào một server bất kỳ chúng ta muốn ;
còn nút thoát các bạn tự viết nhé ;
tiếp đến form đăng nhập người dùng ;
nếu sau khi đăng nhập CSDL thành công bạn mới vào được form này nhé :
Trang 5bây giờ chúng ta viết code cho nút OK
trước tiên bạn phải khai báo không gian sử dụng là :
-Imports System.Data
Imports System.Data.SqlClient
-sau đó viết code cho nút lệnh như -sau :
-Dim Cnn As New SqlConnection(gscon)
Dim cmd As SqlCommand = New SqlCommand()
Cnn.Open()
cmd.Connection = Cnn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select*from phanquyen where username='" & UsernameTextBox.Text & "'"
Dim reader As SqlDataReader
reader = cmd.ExecuteReader
While reader.Read
If PasswordTextBox.Text = reader("pass") Then
Dim a As String
a = reader("nhom")
user = UsernameTextBox.Text
pass = PasswordTextBox.Text
If a = "quan ly " Then
frmmain.Show()
frmmain.ToolStripStatusLabel1.Text = "nguoi su dung la :" & user frmmain.ToolStripStatusLabel2.Text = "chương trình quản lý sách " ElseIf a = "nhap lieu" Then
frmmain.HệThốngToolStripMenuItem.Enabled = False
frmmain.Show()
frmmain.ToolStripStatusLabel1.Text = "nguoi su dung la :" & user frmmain.ToolStripStatusLabel2.Text = "chương trình quản lý sách " Else
user = UsernameTextBox.Text
pass = PasswordTextBox.Text
frmmain.HệThốngToolStripMenuItem.Enabled = False
frmmain.CậpNhậtToolStripMenuItem.Enabled = False
frmmain.Show()
frmmain.ToolStripStatusLabel1.Text = "nguoi su dung la :" & user frmmain.ToolStripStatusLabel2.Text = "chương trình quản lý sách "
Trang 6End If
Else
MessageBox.Show(" mat khau hoac ten su dung khong hop le ")
End If
End While
reader.Close()
Cnn.Close()
-như thế chúng ta đã kết nối với CSDL để truy xuất người dùng được nếu thành công nó gọi form main ra cho các bạn
đó là nội dung của hai bài thực hành đầu , còn về phần tạo menu thì các bạn
tự làm cái này mình không hướng dẫn , tuy nhiên để hiểu rõ bản chất của các câu lệnh bên trong chương trình thì các bạn nên đọc kỹ bài hướng dẫn đầu của mình và làm bài tập mình giao , nếu không làm được liên hệ lại để mình gửi lên , tuy nhiên các bạn cố gắng làm đi nhé , chúc thành công
bài 1 kết nối CSDL trong VB.net
FRIDAY, 26 SEPTEMBER 2008, 04:34:04
Chào các bạn hôm nay mình xin mạn phép hướng dẫn các bạn thao tác tương tác với CSDL thông qua VB.net
Bài 1 Thao tác kết nối CSDL bằng lệnh
Trước tiên các bạn phải hiểu cơ chế ba tầng của net
ADO.net khái niệm con trỏ (cursor ) không tồn tại , thay vào đó đối tượng được xem là một con trỏ tĩnh và đối tượng dataadapter chỉ đọc
Chào các bạn hôm nay mình xin mạn phép hướng dẫn các bạn thao tác tương tác với CSDL thông qua VB.net
Bài 1 Thao tác kết nối CSDL bằng lệnh
Trước tiên các bạn phải hiểu cơ chế ba tầng của net
ADO.net khái niệm con trỏ (cursor ) không tồn tại , thay vào đó đối tượng được xem là một con trỏ tĩnh và đối tượng dataadapter chỉ đọc
ADO.net cung cấp các quá trình điều khiển ứng với các loại CSDL chẳng hạn SQL,
OLEDB.net là trình điều khiển dùng trong các loại CSDL tương tac nhúng
VD access , excel … tuy nhiên cũng có thể dùng nó cho SQL 7.0
ODBC.net là trình điều khiển dùng cho các loại CSDL trương tác thông qua ODBC của hệ điều hành Window
I.trình điều khiển CSDL
Các thuộc tính cần lưu ý khi bạn dùng các trình điều khiển này
Sqlconnection Oledbconnection
Trang 7Sqlcommand Oledbcommand
SqldataAdapterOldbdataAdapter
sqldataReaderoldbdataReader
SqlparamaterOledbparamater
Sau đây chúng ta xem phần diễn giải các thuộc tính command ,
connection ,dataAdapter
Đối tượng Diễn giải
Connection Thiết lập kết nối csdl với nguồn CSDL
Command Thức hiện trên nguồn dữ liệu , đặt vào các tham số và thu nhận chuyển tác từ connection
dataReaderĐọc luồng dữ liệu từ dữ liệu nguồn theo một chiều
dataAdapterLưu trữ dữ liệu đối tượng dataset và giải quyết vấn đề thao tac
dữ liệu cập nhật và trở lại nguồn dữ liệu
Bây giờ chúng ta hãy xem cách kết nối CSDL với SQL thế nào :
Trước tiên chúng ta phải khai báo không gian sử dụng
Imporst system.data
Imports system.data.sqlclient
Như vậy đã khai báo xong không gian sử dụng nhưng nhớ là phải khai báo trước từ khóa Pulic class
Tiếp theo chúng ta khai báo biến sử dụng để kết nối
Dim mycon as sqlconnection
Đây là đoạn lệnh để kết nối csdl
Mycon=new sqlconnection(“ server= ;uid=sa;pwd=.;
database=Northwind” )
Lưu ý server= tức là tôi để mặc định cho các bạn điển tên server của các bạn vào nếu không có nó không chạy đâu , uid và pwd cũng thế , tuy nhiên nếu không có 2 cái này chỉ cần tên server và tên CSDL vẫn chạy
Mycon.open()
Có cách làm khác bạn có thể xem đoạn code sau
Dim mycon as sqlconnection
Dim str as string
Mycon=new sqlconnection
Str=” server= ; uid=.;pwd= ;database=Northwind”
Mycon.connetionstring =str
Mycon.open()
Như vậy ta đã mở được CSDL SQL
Bây giờ chúng ta kết nối CSDL access và excel
Để kết nối CSDL loại này chúng ta phải khai báo không gian sử dụng
Trang 8Imporst system.data
Imporst system.data.oledb
Sau đó chúng ta mới dùng đoạn lệnh sau để kết nối
Dim mycon as oledbconnection
Mycon=new
oledbconnection(“provider=Microsoft.jet.oledb.4.0;datasource=…”)
Mycon.open()
Như vậy chúng ta đã kết nối vớ access tuy nhiên có nhiều bạn lại hỏi dùng connectionstring có được không ? câu trả lời là được đoạn lệnh như sau : Dim mycon as oledbconnection
Dim str as string
Mycon=new oledbconnection
Str =“provider=Microsoft.jet.oledb.4.0;datasource=…”
Mycon.connectionstring=str
Mycon.open()
Tương tự chúng ta kết nối csdl excel
Khi kết nối excel chúng ta vẫn dùng oledb chuối kết nối như sau :
Str=”provider=microsoft.jet.oedb.4.0”
Str+=” ;datasource=…….”
Str+=”;extended properties=” ” excel 8.0;HDR=Yes;”””
Còn lại chúng ta làm tương tự như kết nối access
Bài tập bậy giờ các bạn dựa trên những gì mình nói hãy thực thi chương trình có giao diện sau :
Khi chạy nếu ấn nút kêt nối nào nó thông báo đã kết nối được hay không trên texbox
Chúc các bạn thành công
Hết buổi 1 :
Trang 9Mô tả!!
Thường thì ta làm 1 ứng dụng nào cũng có phần đăng nhập!!
Vấn đề là việc hiển thị form đăng nhập!!
Nhiều người hỏi cách làm sao để form đăng nhập hiển thị trước form chính!!
ở đây theo tui biết thì có 3 cách!!
Cách 1: Load form đăng nhập trước!! > đăng nhập thành công thì hide nó
đi và cho gọi form chính lên (cách này có nhược điểm là form đăng nhập chỉ hide đi chứ ko close ) vì vậy nó ko hay và tốn bộ nhớ
Cách 2: trong sự kiện Load form chính ta gọi form con hiển thị bằng phương thức Showdialog() Sau khi đăng nhập thành công thì close() form con lại!!! Cách này cũng hay nhưng có nhược điểm là!!! form chính và form đăng nhập đều được hiển thị (ko hay lắm) có nhìu bạn đem hide() form chính đi nhưng kết quả là sẽ ko chạy được form đăng nhập kakakka;
Cách 3 : Mô tả cũng giống cách 2 nhưng ta ko đặt sự kiện showdialog() ở sự kiện loadform nữa mà ta thực hiện nó trước khi form chính khởi tạo các thành phần của nó (Đây chỉ là 1 thủ thuật nhỏ thui )
Code:
public FormCha()
{
FormCon f = new FormCon();
f.ShowDialog();
InitializeComponent();
}
mọi vấn đề ở cách 1 và cách 2 đều được giải quyết !!
các bạn có thể download mã nguồn file Attach
chúc thành công
Nói chung, đã sử dụng web động thì website phải có khả năng cập nhật online Khi đó một vấn đề đặt ra là làm sao chúng ta bảo mật được phần
Trang 10thông tin cập nhật Điều đó dẫn tới tất yếu phải đặt mật khẩu và username cho trang hoặc cho thư mục chúng ta sử dụng để cập nhật Ngay cả trong trường hợp đó, nếu bằng một phương pháp nào đó hacker có thể tìm cách thâm nhập và mở file có chứa password thì hacker vẫn có thể sử dụng
password để phá hoại website Để chống lại khả năng bị hack này chúng ta cần phải mã hoá password để ngay cả khi hacker đã mở được file có chứa password cũng ko thể biết được mật khẩu chúng ta sử dụng
.net cung cấp phương pháp để mã hoá password theo phương thức không thể giải mã là MD5 và SHA1
Để có thể mã hoá password bạn có thể dùng câu lệnh sau:
string strHash =
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConf igFile ("sadfd","MD5"); //có thể thay MD5 bằng SHA1
sau đó lưu strHash vào CSDL hoặc vào Web.config tuỳ theo yêu cầu của bạn
Code Vb.net
Dim strHash as String =
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConf igFile("password của bạn","MD5")
Tác giả Gửi đi 07/04/2005 11:51:37 CH
Cyber
Member
Public Function EncryptPassword(ByVal password As String) As String Dim encoding As New UnicodeEncoding
Dim b As Byte
Trang 11Dim strReturn As String = ""
Dim hashBytes As Byte() = encoding.GetBytes(password) ' Compute the SHA-1 hash
Dim sha1 As New SHA1CryptoServiceProvider
Dim cryptPassword = sha1.ComputeHash(hashBytes) Return Convert.ToBase64String(cryptPassword)
For Each b In cryptPassword
strReturn = strReturn & b
Next b
Return strReturn
End Function
NOTE nhớ Imports
Imports System.Security
Imports System.Security.Cryptography
Tác giả Gửi đi 29/04/2005 5:44:35 CH
nxthien
Member
Trang 12
Thế sao khi em lưu cái pass đã mã hóa mà bây giờ muốn kiểm tra thì làm thế nào hả bác? Mình cũng mã hóa cái chuổi người ta nhập vào rồi kiểm với cái mã đã lưu hay sao?
em mới học net nên ko hiểu
nxthien
Tác giả Gửi đi 29/04/2005 9:30:24 CH
test
Member
Mã hoá theo kiểu trên không thể giải mã ngược được
Để sử dụng khi người dùng nhập password để đăng nhập ta lại mã hoá lại một lần nữa, sau đó so sánh 2 chuỗi đã mã hoá với nhau nếu trùng nhau thì password là đúng
Good luck!
Tác giả Gửi đi 23/06/2005 6:36:30 CH
hanoi
Member
Theo tôi cách mà net làm rất hay,ở đây ta chỉ cho phép mã hóa một chiều
mà thôi.Nếu cho phép giải mã Thì nếu ai đó biết được chuỗi mà hóa có thể giải mã ra được và đăng nhập bình thường vào hê thống.Ví dụ nếu ta để Password lên URL thì đố ai lấy mật khẩu của minh được
Tác giả Gửi đi 17/09/2006 9:41:18 SA
demen
Trang 13Member
Cho minh hoi ban mot ti :
Lam sao viet doan Code de Insert Password khi nguoi dung Dang ky (Register New Users ) cung nhu Retrieve khi ho dang nhap (Log in) vao CSDL nhi ?
Cam on ban nhieu
Ghi chu: Viet theo kieu Hash Password nhu cac ban da noi o tren ay Minh thay no rat la hay nen muon hoc tap de lam
Sửa chữa lần cuối cùng lúc 19/09/2006 10:30:41 CH bởi demen
Tác giả Gửi đi 17/09/2006 12:19:46 CH
dearfriend
Mod
Dễ thôi
Bạn viết môt câu lệnh SQL hoặc tạo môt STORE PROCEDURE trong sql (hay access), VD:
string commandText = INSERT INTO Users(UserName,UserPassword) VALUES(@userName,@userPassword)
Tạo một kết nối đến csdl, VD:
SqlConnection cnn = new SqlConnection(chuỗi kết nối);
Tạo một sql command hay OleDb command object tuỳ theo loại CSDL bạn
sử dụng, ví dụ;
SqlCommand cmd = new SqlCommand(commandText,cnn)
cmd.Parameters.Add("@userName", Tên thành viên);
cmd.Parameters.Add("@userPassword",mật khẩu đã được Hash)
cnn.Open();