Lập trình Lập trình VB.Net 2005 - Visual Basic.NET & Database

™Cúpháp lấy dữliệu từDataTable: Tên_dgv. DataSource = ™Cúpháp lấy dữliệu từDataView: Tên_dgv. DataSource = Cúpháp lấy dữliệu từDataSet: Tên_dgv. DataSource = Tên_dgv. DataMember =

pdf23 trang | Chia sẻ: maiphuongtl | Lượt xem: 3159 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Lập trình Lập trình VB.Net 2005 - Visual Basic.NET & Database, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
11Windows Form programming with VB.Net 2005. Buổi 6: Visual Basic.NET & Database 2Windows Form programming with VB.Net 2005. Giới thiệu: ™Các công nghệ truy cập dữ liệu của Microsoft như DAO (Data Access Object), ODBC (Open DataBase Connectivity), RDO (Remote Data Object), ADO (ActiveX Data Objects) ™Tuy nhiên từ khi .NET Framework ra đời thì công nghệ ADO.NET đã được tích hợp, ADO.NET: ¾Chứa các lớp cho phép các ứng dụng connect data sources ¾Execute commands ¾Manage disconnected data (quản lý dữ liệu đã ngắt kết nối). 23Windows Form programming with VB.Net 2005. Giới thiệu (tt): ™Với ADO.NET người lập trình có thể viết ít mã lệnh thao tác cơ sở dữ liệu hơn so với các công nghệ trước trong các ứng dụng client-server hoặc các ứng dụng trên desktop. ™Mặt khác, trong ASP.NET từ phiên bản .NET Framework 2.0 trở lên có thêm các thao tác với cơ sở dữ liệu mà không sử dụng ADO.NET như SqlDataSource, LINQ hoặc Profiles. 4Windows Form programming with VB.Net 2005. Buổi 6: VB.NET & Database (CSDL) ™Mục tiêu của bài: Sử dụng được các lớp trong thư viện ADO.NET tương tác với CSDL: ¾Mô tả cách thức kết nối và giao tiếp với CSDL ¾Mô tả được chức năng và cách thức sử dụng các lớp DataSet, Datatable, Datarow, DataColumn để đọc dữ liệu. ¾Đọc dữ liệu với DataReader và hiển thị trên các lớp kế thừa từ ComboBox, Listbox, TextBox... ¾Cập nhật dữ liệu với Dataset và DataAdapter 35Windows Form programming with VB.Net 2005. Kiến trúc ADO.NET ADO.NET là đối tượng dùng để thao tác với CSDL trong .NetFramework; các ngôn ngữ lập trình trong Visual studio (trong đó có VB.Net) dùng phương thức kết nối này để giao tiếp với CSDL DataAdapter 6Windows Form programming with VB.Net 2005. Kiến trúc ADO.NET ™Có thể chia làm 2 phần chính: ¾Managed Provider Component: bao gồm các đối tượng như: DataAdapter, DataReader, Connection, Command giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file,… ¾Content Component: bao gồm các đối tượng như DataSet, DataTable, DataView, DataRow, DataColumn, DataRelation …đại diện cho dữ liệu thực sự cần làm việc. 47Windows Form programming with VB.Net 2005. Content Component: Content Component: là các đối tượng đại diện cho dữ liệu cần xử lý, bao gồm các đối tượng sau: ¾DataSet ¾DataTable ¾DataView ¾DataRow ¾DataColumn ¾DataRelation 8Windows Form programming with VB.Net 2005. Content Component: ¾DataSet: là hình ảnh của CSDL trong bộ nhớ, nó chứa các bảng dữ liệu trong các DataTable và các mối quan hệ trong Datarelation ¾DataTable: giống như bảng dữ liệu, dùng chứa dữ liệu trên ứng dụng ¾Dataview: là “Hình ảnh” của DataTable, một DataTable có thể có nhiều Dataview, thông qua Dataviewt có thể sắp xếp dữ liệu, lọc dữ liệu trong DataTable ¾DataColumn: chứa các cột trong DataTable ¾DataRow: chứa các dòng trong DataTable 59Windows Form programming with VB.Net 2005. Content Component: ¾DataRelation: chứa các mối ràng buộc trong CSDL, có thể chứa: * Unique Constraint or Primary Key Constraint: đảm bảo tính duy nhất về giá trị của một cột trong table * Foreign Key Constraint: ràng buộc khóa ngoại 10Windows Form programming with VB.Net 2005. Microsoft cung cấp hai bộ Provider component trong phiên bản ADO.NET là OLEDB và SQL Server ¾OLEDB managed provider: dùng thao tác với các loại CSDL (Access, Excel, Oracle, IBM…), bao gồm các đối tượng sau: 9 OleDBConnection 9 OleDBCommand 9 OleDBParemeter 9 OleDBDataReader 9 OleDBDataAdapter ¾OLEDB: Namespace Imports System.Data.OLEDB Managed Provider Component 611Windows Form programming with VB.Net 2005. ™ SQL Server managed provider: dùng thao tác với CSDL SQL Server, bao gồm các đối tượng: 9 SQLConnection 9 SQLCommand 9 SQLParemeter 9 SQLDataReader 9 SQLDataAdapter ™Để sử dụng Provider nào ta phải viết lệnh Imports (khai báo Namespace) trên đầu đối mỗi class ¾SQL Server: Imports System.Data.SQLClient Managed Provider Component (tt) 12Windows Form programming with VB.Net 2005. ™ Oracle managed provider: dùng thao tác với CSDL SQL Server, bao gồm các đối tượng: 9 OracleConnection 9 OracleCommand 9 OracleParemeter 9 OracleDataReader 9 OracleDataAdapter ¾Ocracle: Imports Oracle.DataAccess.Client Managed Provider Component (tt) 713Windows Form programming with VB.Net 2005. ¾Connection: liên kết với CSDL, các đối tượng khác phải thông qua đối tượng Connection để thao tác với CSDL ¾Command: là đối tượng dùng thực hiện các câu truy vấn (SQL) ¾Parameter: là đối tượng dùng truyền tham số cho Command ¾DataReader: chứa dữ liệu lấy từ CSDL, chỉ đọc, chỉ duyệt từ trên xuống ¾DataAdapter: là đối tượng trung gian giữa CSDL và DataSet, thông qua đối tượng này ta có thể lấy dữ liệu từ CSDL đưa lên Dataset và cập nhật dữ liệu từ DataSet xuống CSDL Managed Provider Component (tt) 14Windows Form programming with VB.Net 2005. ¾Ghi chú: Tùy theo CSDL chúng ta sử dụng (Access, SQl Server, Ocrale) các Managed Provider Component phải được dùng hợp lý: VD: ¾OleDbConnection OleDbCommand ¾SqlConnection SqlCommand ¾OracleConnection OracleCommand ¾…… Managed Provider Component (tt) 815Windows Form programming with VB.Net 2005. Dùng tạo kết nối giữa ứng dụng và CSDL ™Các thuộc tính (Properties) của OLEDBConnection ¾ConnectionString: chuỗi liên kết CSDL, liên kết với Access với Cú pháp sau: “Provider=Microsoft.jet.oledb.4.0;Data Source= Đườngdẫn\tênCSDL” ¾State: chỉ ra trạng thái của đối tượng kết nối (Connection Object) hiện tại như: Closed, Open, Broken…) OleDbConnection Object () 16Windows Form programming with VB.Net 2005. ™Một số Phương thức thường dùng của Connection ¾Open: mở kết nối đến CSDL cùng với các thông tin đã được chúng ta khai báo trong ConnectionString ¾Close: Đóng kết nối với nguồn dữ liệu. Sử dụng phương thức này để đóng Connection đang mở. ¾Dispose: Xoá mọi tài nguyên liên quan đến Connection trên vùng nhớ OleDbConnection Object (tt) 917Windows Form programming with VB.Net 2005. ¾Khai báo OleDbConnection dùng MS Access: ‘Imports provider ở đầu màn hình Code Imports SysTem.Data Imports SysTem.Data.OleDb ‘ Khai báo và khởi tạo OLEDbConnection Dim strConnection As String = _ "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source =" & “” Dim cn as New OleDbConnection(strConnection) cn.Open() ‘Khai báo trong class thường dùng từ khóa Private thay cho Dim OleDbConnection Object (tt) 18Windows Form programming with VB.Net 2005. ¾Nếu lưu CSDL trong cùng thư mục file chạy chương trình ta có thể dùng thuộc tính Application.StartupPath sau: Dim cn as new OleDbConnection Dim strConnection as string = _ "Provider=microsoft.jet.oledb.4.0;data source=" & _ Application.StartupPath & “\TenCSDL.mdb“ cn.ConnectionString = strConnection Try ConnectionState = cn.State If cn.State = Data.ConnectionState.Closed Then cn.Open() End If Catch ex As Exception MessageBox.Show("Lỗi Kết nối CSDL!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error) End Try Connection Object (tt) 10 19Windows Form programming with VB.Net 2005. Imports System.Data Imports System.Data.OleDb Public Class clsDataLayer Private strConnection As String Private cn As New OleDbConnection Public Sub New() strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\QLHoaDon.mdb" cn.ConnectionString = strConnection End Sub ‘ Kết thúc Sub khởi tạo class clsDataLayer Public Sub GetConnection() Dim ConnectionState As ConnectionState Try ConnectionState = cn.State If cn.State = Data.ConnectionState.Closed Then cn.Open() End If Catch ex As Exception MsgBox(ex.Message & “ Lỗi mở CSDL!", “Thông báo lỗi“) End Try End Sub ‘ Kết thúc Sub mở kết nối CSDL End Class 20Windows Form programming with VB.Net 2005. ™ Là đối tượng được dùng để các truy vấn trên CSDL ™ Khai báo: thường dùng 2 kiểu khai báo ¾Khái báo đơn giản: Dim cmd As New OleDbCommand() ¾Khái báo có khởi tạo: Dim cmd As New OleDbCommand (strSQL, objConnection) Trong trường hợp này chuỗi truy vấn strSQL và objConnection phải được khai báo trước hoặc đã được gọi ở thủ tục hoặc hàm nào đó trước khi khai báo theo kiểu này) OleDbCommand Object: 11 21Windows Form programming with VB.Net 2005. ¾CommandText: truy vấn SQL, tên bảng hoặc tên stored procedure muốn thực hiện trên nguồn dữ liệu. ¾Commandtype: Giá trị chỉ định cho biết nội dung CommandText phải dùng là gì với các giá trị sau: ƒ Text: (mặc định) một câu lệnh SQL ƒ TableDirect: tên của một hoặc nhiều bảng ƒ Storedprocedure: tên một thủ tục nội lại trong CSDL (Các giá trị này khi lập trình VB.Net sẽ tự hiển thị để chọn) Properties thường dùng của Command Object 22Windows Form programming with VB.Net 2005. ¾ Connection: Đối tượng Connection sử dụng cho Command ¾ Parameters: Tập hợp các tham số dùng trong Command, thường dùng cho truy vấn có ĐK (WHERE) ¾ VD: Dim cmd As New OleDbCommand() cmd.Connection = cn ‘ Connection Object is opened cmd.CommandText = "sp_Login" cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("Uname", UserName) cmd.Parameters.AddWithValue("Pws", Password) ‘ UserName, Password là 2 biến nhập liệu được truyền vào Properties thường dùng của Command Object 12 23Windows Form programming with VB.Net 2005. ¾ExecuteReader: Phương thức này (không hoặc có 1 tham số) trả về một đối tượng DataReader, Trường hợp có tham số các tham số thông dụng là: 9CommandBehavior.SingleRow: Câu truy vấn chỉ trả về 1 dòng duy nhất CommandBehavior.SchemaOnly : Câu truy vấn không trả về dữ liệu mà trả về thông tin các cột của bảng 9CommandBehavior.CloseConnection: đối tượng connection sẽ đóng khi đối tượng DataReader đóng Các Phương thức của Command Object: 24Windows Form programming with VB.Net 2005. ¾ExecuteNonquery: 9Gọi thực hiện các câu truy vấn cập nhật dữ liệu: INSERT, UPDATE, DELETE 9 Phương thức này trả về số dòng chịu tác động của Command, nếu có lỗi trả về -1 ¾ExecuteScalar: 9Phương thức này thực hiện lệnh của Command và chỉ trả về giá trị của cột đầu tiên và dòng đầu tiên. 9phương thức này khi muốn Command thực hiện các hàm tính toán thống kê SUM, COUNT, AVG, MAX, MIN... trên nguồn dữ liệu ngay lúc thực thi Các Phương thức của Command Object: 13 25Windows Form programming with VB.Net 2005. Public Function GetCommand() as OleDbCommand Dim cn As New OleDbConnection Dim cmd As New OleDbCommand Dim ConnectionState As ConnectionState Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VB.NET\ADO.NET\QuanLyHoaDon\QLHoaDon.mdb" cn.ConnectionString = strConnection Try ConnectionState = cn.State If cn.State = Data.ConnectionState.Closed Then cn.Open() End If cmd.Connection = cn Return Cmd Catch ex As Exception Return Nothing MessageBox.Show(ex.Message) End Try End function 26Windows Form programming with VB.Net 2005. ™Là đối tượng truy cập dữ liệu trực tiếp, sử dụng cursor phía Server và duy trì kết nối với Server trong suốt quá trình đọc dữ liệu, chứa dữ liệu trả về từ phương thức ExecuteReader của command object ™Các thuộc tính của OledbReader: ¾FieldCount: Trả về số dòng hiện hành của DataReader. ¾ IsClosed: Cho biết DataReader đã đóng chưa? ¾ Item: Trị của cột truyền vào. Tham số truyền có thể là tên cột hoặc số thứ tự của cột (từ 0Æ n-1 cột) OleDbReader Object: (DataReader) 14 27Windows Form programming with VB.Net 2005. ™Các phương thức của OledbReader: ¾Close(): Đóng DataReader. ¾GetFieldType(i): kiểu dữ liệu của cột thứ i ¾GetName(i): Trả về tên của cột thứ i ¾GetOrdinal(name): Trả về số thứ tự của cột (tính từ 0) ¾GetSchemaTable(): Trả về bảng chứa thông tin mô tả cột của DataReader. OleDbReader Object: (tt) 28Windows Form programming with VB.Net 2005. ™Các phương thức của OledbReader (tt): ¾GetValue(i): Trả về giá trị của cột thứ i ¾Read(): Di chuyển đến dòng kế tiếp và trả về True nếu còn dòng để di chuyển, ngược lại trả về False ¾ NextResult(): Advances the data reader to the next result, when reading the results of batch SQL statements OleDbReader Object: (tt) 15 29Windows Form programming with VB.Net 2005. Public Function GetDataReader(ByVal StoreProceureName As String, Optional ByVal arrParams() As String = Nothing, Optional ByVal arrValues() As Object = Nothing) As OleDbDataReader Dim rd As OleDbDataReader Try If Not (arrParams Is Nothing) Then For nIndex As Integer = 0 To (arrParams.Length - 1) cmd.Parameters.AddWithValue(arrParams(nIndex), arrValues(nIndex)) Next End If rd = cmd.ExecuteReader(CommandBehavior.CloseConnection) Return rd Catch ex As Exception MsgBox(ex.Message) Return Nothing Finally ' Neu Dong Ket noi thi Reader khong doc duoc cmd.Dispose() End Try End Function 30Windows Form programming with VB.Net 2005. OleDbDataAdapter Object (DataAdapter) ™Là một bộ gồm bốn đối tượng Command: ¾SelectCommand: cho phép lấy thông tin từ nguồn dữ liệu về ¾ InsertCommand: cho phép thêm dữ liệu vào bảng trong nguồn dữ liệu. ¾UpdateCommand: cho phép sửa đổi dữ liệu trên bảng trong nguồn dữ liệu. ¾DeleteCommand: cho phép hủy bỏ dữ liệu trên bảng trong nguồn dữ liệu. 16 31Windows Form programming with VB.Net 2005. OleDbDataAdapter Object (tt) ™Cú pháp khai báo: Dim Bien as New OleDbDataAdapter Khởi tạo: Bien= new OleDbDataAdapter (,) Trong đó: : Câu lệnh truy vấn hoặc tên storedprocedure để thực hiện truy xuất từ nguồn dữ liệu : Đối tượng Connection đã kết nối với CSDL 32Windows Form programming with VB.Net 2005. OleDbDataAdapter Object (DataAdapter) ™Các thuộc tính (Properties): ¾SelectCommand: Đối tượng Command chứa nội dung lệnh truy xuất các mẩu tin từ nguồn dữ liệu ¾DeleteCommand: Đối tượngCommand chứa nội dung lệnh hủy các mẩu tin trên nguồn dữ liệu ¾ InsertCommand: Đối tượng Command chứa nội dung lệnh chèn các mẩu tin mới vào nguồn dữ liệu. ¾Update command: Đối tượng Command chứa nội dung lệnh cập nhật các mẩu tin vào nguồn dữ liệu. 17 33Windows Form programming with VB.Net 2005. OleDbDataAdapter Object (DataAdapter) ™Các Phương thức OleDbDataAdapter: ¾Fill(): Đổ dữ liệu vào DataTable có sẵn ¾Fill(): Đổ dữ liệu vào DataSet có sẵn. Dữ liệu được lấy về Dataset dưới dạng các DataTable, với tên mặc định là Table1, Table2,… ¾Fill(,): Đổ dữ liệu vào DataSet cho bảng ; nếu chưa có, bảng sẽ được tạo với tên là . (Cách này thường được dùng nhiều hơn) 34Windows Form programming with VB.Net 2005. OleDbDataAdapter Object (DataAdapter) ™Chú ý: ¾Khi dùng nhiều DataAdapter để đổ dữ liệu của nhiều bảng vào DataSet, nếu không chỉ rõ đổ vào bảng nào trong DataSet, dữ liệu sẽ đổ chung vào một bảng, số cột là tổng số cột có tên khác nhau trong các bảng từ nguồn dữ liệu, trên mỗi dòng cột nào không có dữ liệu tương ứng sẽ mang trị Null. ¾Chúng ta có thể dùng một DataAdapter để đổ dữ liệu của nhiều bảng vào DataSet với nội dung lệnh truy vấn là các lệnh liên tiếp và cách nhau bằng dấu (;) (MS. SQL Server) 18 35Windows Form programming with VB.Net 2005. DataTable ™Đối tượng chứa dữ liệu trên Dataset ™Khai báo: Dim Ten_Bien as new DataTable ¾DataTable: được tạo từ tập hợp DataRows và DataColums ¾DataColumns: tập hợp các cột có trong DataTable ¾DataRows: tập hợp các dòng dữ liệu 36Windows Form programming with VB.Net 2005. DataColumn ™Tạo mới DataColumn Dim Ten_Cot New DataColumn(,) Trong đó: : Tên muốn đặt cho cột : Kiểu dữ liệu của cột, được khai báo thông qua cú pháp System.Type.GetType(“System.Tênkiểu”) ™Đưa cột vào bảng: TenBang.Columns.add(Ten_Cot) 19 37Windows Form programming with VB.Net 2005. DataRows ™DataRows là tập hợp các dòng dữ liệu của bảng. Mọi tham chiếu đến dòng đều thông qua tập hợp này. Sau đây là một số chức năng của DataRow Các thuộc tính: Rows.Count: Cho biết số dòng dữ liệu Trong DataTable Rows.Item(i) hoặc Rows(i): tham chiếu đến dòng i Rows.Item(i)(j): lấy dữ liệu của cột j trên dòng i Rows.Item(i)(“Têncột”): lấy dữ liệu của cột có tên cột trên dòng i (i bắt đầu từ 0) 38Windows Form programming with VB.Net 2005. DataRows ™Để thêm dòng vào table: TableName.Rows.Add() ™Ví dụ: thêm một dòng dữ liệu vào Table Khoa Dim dong As DataRow = Khoa.NewRow() dong(0)= “VL“ dong(1)= “VậtLý“ Khoa.Rows.Add(dong) ™Rows.RemoveAt(): Xóa dòng khỏi bảng ™Rows.Remove(dong): Xóa dòng khỏi bảng ™Rows.Clear(): Xóa toàn bộ các dòng dữ liệu của bảng 20 39Windows Form programming with VB.Net 2005. Dataview Dataview: là“Khung nhìn” của DataTable, thôngqua Dataview, ta có thể hiển thị dữ liệu lấy từ DataTable theo yêu cầu của người dùng ¾Khai báo: Dim Ten_bien as New DataView() ¾Ta có thể tạo một View từ bảng bằng: Dim Ten_bien As DataView = Ten_Bang.DefaultView 40Windows Form programming with VB.Net 2005. Dataview Thuộc tính và phương thức quan trọng của Dataview ¾RowFilter: Biểu thức lọc của DataView để thay đổi cách hiện thị dữ liệu Cú pháp: Ten_view.RowFilter=“Tencot=Giá tri and/or …” ¾ Sort :Biểu thức sắp xếp, Cú pháp: Ten_view.Sort=“Tencot asc/desc,…” ¾ Find:Tìm kiếm, trả về vị trí dòng thỏa điều kiện, tìm theo cột nào phải sắp xếp dữ liệu theo cột đó, Cú pháp: Ten_View.Sort = “Ten_Cot cần tìm” vi_tri = Ten_view.Find(“Giá trị”) 21 41Windows Form programming with VB.Net 2005. DataSet ¾Dataset là một lớp dùng để thao tác với dữ liệu theo mô hình dữ liệu phi kết nối. ¾Nó được coi như là một kho chứa các table ¾Dữ liệu có thể cập nhật trong các bảng này và khi muốn cập nhật vào CSDL thì DataSet sẽ thực hiện việc cập nhật dữ liệu thông qua DataAdapter 42Windows Form programming with VB.Net 2005. DataSet ¾ Các bảng trong DataSet có thể do DataAdapter Fill vào hoặc cũng có thể là các bảng được tạo thành từ lớp DataTable ¾ Các bảng này được quản lý bởi tập hợp Tables của lớp DataSet. ¾Một Data set có thể lưu trữ nhiều bảng (Table) ¾Khai báo dim Ten_Bien as New DataSet() 22 43Windows Form programming with VB.Net 2005. Các phương thức quan trọng của DataSet: ¾Ten_bien.Tables.Add(): đưa bảng vào DataSet ¾Ten_bien.Tables.Remove(): Xóa bảng ra khỏi DataSet ¾Ten_bien.Tables.Contains(): Kiểm tra bảng có thuộc về DataSet ¾Ten_Bien.Tables.CanRemove(): trả về true nếu có thể xóa bảng ¾Ten_bien.Tables.Clear(): Xóa tất cả các bảng khỏi DataSet ¾Ten_Bien.Dispose: Xóa DataSet ¾Ten_Bien.Clear: Xóa toàn bộ nội dung trong DataSet: 44Windows Form programming with VB.Net 2005. Public Function UpdateRows(ByVal queryString As String, ByVal ds As DataSet, ByVal tableName As String) As DataSet Try Dim da As New OleDbDataAdapter() da.SelectCommand = New OleDbCommand(queryString, cn) Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(da) da.Fill(ds, tableName) da.Update(ds, tableName) Return ds Catch ex As Exception MsgBox(ex.Message) Return Nothing End Try End Function 23 45Windows Form programming with VB.Net 2005. DataGridView Control ¾ Hiển thị dữ liệu dạng khung lưới dữ liệu thường được lấy từ DataTable, DataView hoặc DataSet ™Cú pháp lấy dữ liệu từ DataTable: Tên_dgv. DataSource = ™Cú pháp lấy dữ liệu từ DataView: Tên_dgv. DataSource = Cú pháp lấy dữ liệu từ DataSet: Tên_dgv. DataSource = Tên_dgv. DataMember = 46Windows Form programming with VB.Net 2005.

Các file đính kèm theo tài liệu này:

  • pdfvb_net_2005_b6_6717.pdf
Tài liệu liên quan