Kết nối cơ sở dữ liệu

Chia sẻ: La Van Nguyen | Ngày: | Loại File: DOC | Số trang:15

0
289
lượt xem
153
download

Kết nối cơ sở dữ liệu

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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"

Chủ đề:
Lưu

Nội dung Text: Kết nối cơ sở dữ liệu

  1. Bạ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 = ""
  2. Else 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 :
  3. sau 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
  4. như 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é :
  5. bâ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
  6. frmmain.ToolStripStatusLabel2.Text = "chương trình quản lý sách " End 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
  7. 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 Sqlcommand 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
  8. 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 Imporst 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
  9. Chúc các bạn thành công Hết buổi 1 : Mô 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
  10. 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 thô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
  11. Dim encoding As New UnicodeEncoding Dim b As Byte Dim 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
  12. Member 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
  13. demen Member 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);
  14. cmd.Parameters.Add("@userPassword",mật khẩu đã được Hash) cnn.Open(); cmd.ExecuteNonquery(); cnn.Close(); Khi đăng nhập bạn có thể dùng lệnh COUNT * FROM Users WHERE UserName=@userName AND UserPassword=@userPassword cách làm tương tự, thay đổi một chút: int i = Convert.ToInt32(cmd.ExecuteScalar()); if(i==0) { Không có người dùng nào với mật khẩu và password như vậy, viết code xử lý } else { thực hiện đăng nhập cho người dùng } chúc may mắn Sửa chữa lần cuối cùng lúc 17/09/2006 12:20:33 CH bởi dearfriend Tác giả Gửi đi 18/09/2006 3:24:06 SA demen Member Cám ơn bạn nhièu nha , Mình sẻ thử như cách bạn chỉ . Nói thật mình không biết làm sao để nối hai đoạn Code giửa Hash Password và Code Insert lại với nhau . Mình dùng VB và Sql server 2000 . À kỳ này Forum xem bộ khá tốt . Mình hy vọng sẽ nhận được nhiều sự giúp đỡ của mọi nguời .Chúc May mắn . Sửa chữa lần cuối cùng lúc 18/09/2006 3:30:38 SA bởi demen
  15. Tác giả Gửi đi 18/09/2006 9:18:54 SA dearfriend Mod Bộ forum lần này tốt hơn trước nhiều, tuy nhiên version hiện tại dùng để download cũ hơn, nếu bạn cần gấp bộ mới mình có thể gửi cho bạn, tuy nhiên nếu ko cần gấp thì nên đợi một thời gian để bọn mình test hết SQL(version mới có cả code CSDL sql server) Code trên là C# nhưng chuyển sang VB.net cũng đơn giản thôi. Chúc may mắn. Tác giả Gửi đi 19/09/2006 10:33:29 CH demen Member OK minh se doi . Cam on ban truoc nghe . Co dieu minh hoc VB.net rat it nen viec chuyen tu C# qua VB khong de voi minh chut nao . Hien tai minh dang quay lai hoc lai VB , hy vong vai nam toi minh co the chuyen tu code C# cua ban qua VB cua minh roi .Thanks

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản