Tập bài giảng SQL Server

Chƣơng 1

TỔNG QUAN VỀ SQL SERVER

1.1. Giới thiệu về SQL Server

Năm 1970, IBM đã khởi tạo ra ngôn ngữ máy tính cho các truy vấn trong cơ sở

dữ liệu có tên là SEQUEL (Structured English Query Language). Năm 1970, IBM đã

khởi tạo ra ngôn ngữ máy tính cho các truy vấn trong cơ sở dữ liệu có tên là SEQUEL

(Structured English Query Language). Sau một thời gian, ngôn ngữ này phát triển

không những chỉ thực hiện các truy vấn mà còn có thể xây dựng và quản trị cơ sở dữ

liệu. Sau đó, IBM đã phổ biến ngôn ngữ này một cách công khai và trên nhiều phạm vi

mà ngày nay bạn biết đến với tên là SQL. Năm 1985, IBM kết hợp với Microsoft để

phát triển một số hệ điều hành và các phần mềm hệ thống khác. Hệ điều hành đầu tiên

có tên OS/2 được ra đời dựa trên hệ điều hành MS-DOS của Microsoft.

Ngày 16/12/1987, hệ điều hành OS/2 1.0 đã chính thức được phát hành. Nhưng

sau đó IBM đã đưa ra phiên bản mới của OS/2 gọi là OS/2 mở rộng (Extended) được

tích hợp thêm một phần cơ sở dữ liệu SQL của IBM (hệ quản trị cơ sở dữ liệu DB2).

Microsoft nhận thấy rằng nếu IBM có thể đưa ra giải pháp hoàn chỉnh cho OS/2 mở

rộng thì liệu có khách hàng nào sẽ mua sản phẩm OS/2 của Microsoft không ?

Vào thời điểm này, Microsoft chưa hề có một sản phẩm thuộc loại quản trị cơ

sở dữ liệu. Ngay sau đó, Microsoft đã quay sang kết hợp với công ty Sybase để cùng

hợp tác làm ra một sản phẩm thuộc loại hệ quản trị cơ sở dữ liệu (Database

Management System). Với sự hợp tác tốt đẹp, hai công ty này đã thành công cho ra

đời một sản phẩm thuộc loại cơ sở dữ liệu có tên rất khó nhớ là Ashton-Tate vào năm

1988, sản phẩm này hoạt động trên môi trường OS/2. Sau đó một thời gian, Sybase đã

phát triển sản phẩm này trên môi trường UNIX và đổi tên riêng là DataServer mà ngày

nay còn có tên khác là Sybase Adaptive Server.

Microsoft quyết định không phát triển hệ điều hành OS/2 mà thay vào đó cho ra

đời một hệ điều hành mạng máy tính có tên là Windows NT Server. Và thế là SQL

Server chỉ hoạt động độc lập trên môi trường Windows NT Server mà thôi. Lần lượt

các phiên bản của Microsoft SQL Server đã ra đời sau sự kiện này từ 4.2. Sau đó được

nâng cấp thành 4.21, 6.0, 6.5, 7.0. Tuy nhiên, các phiên bản của SQL Server phổ biến

hiện này trên thị trường là SQL Server 2000, 2005, 2008, và mới nhất là SQL

Server 2012.

Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relation

Database Management System - RDBMS), cung cấp cách tổ chức dữ liệu bằng

cách lưu chúng vào các bảng. Dữ liệu quan hệ được lưu trữ trong các bảng và các quan

hệ đó được định nghĩa giữa các bảng với nhau. Người dùng truy cập dữ liệu trên

Server thông qua ứng dụng. Người quản trị CSDL truy cập Server trực tiếp để thực

hiện các chức năng cấu hình, quản trị và thực hiện các thao tác bảo trì CSDL. Ngoài

ra, SQL Server là một CSDL có khả năng mở rộng, nghĩa là chúng có thể lưu một

lượng lớn dữ liệu và hỗ trợ tính năng cho phép nhiều người dùng truy cập dữ liệu đồng

thời.

pdf320 trang | Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 247 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Tập bài giảng SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
chitecture). Có nghĩa là các ứng dụng kết nối đến cơ sở dữ liệu, truy cập dữ liệu và lưu trữ trong bộ nhớ. Sau đó hủy bỏ kết nối với cơ sở dữ liệu và sử dụng bộ nhớ sao chép của dữ liệu đó. Nếu như cơ sở dữ liệu cần phải được cập nhật với các thay đổi trên bộ nhớ sao chép, một kết nối mới được hình thành và cơ sở dữ liệu được cập nhật. Bộ nhớ chính lưu trữ dữ liệu là DataSet, nơi mà chứa các bộ nhớ lưu trữ dữ liệu khác, như là: Các đối tượng DataTable; ta có thể lọc và sắp xếp dữ liệu trên DataSet bằng việc sử dụng các đối tượng DataView. Việc sử dụng kiến trúc Disconnected Architecture cung cấp rất nhiều lợi ích, trong đó, quan trọng nhất là cho phép ứng dụng trở lên scale up. Nghĩa là cơ sở dữ liệu sẽ thực thi tốt như hỗ trợ hàng trăm người dùng. Điều đó có thể bởi vì ứng dụng kết nối đến cơ sở dữ liệu chỉ đủ để truy cập hoặc cập nhật dữ liệu, bằng cách đó giải phóng các kết nối và cơ sở dữ liệu sẵn có cho các thể hiện khác của ứng dụng hoặc các ứng dụng khác sử dụng cùng cơ sở dữ liệu. Tập bài giảng SQL Server 219 Hình 8.2. Mô hình ADO.NET 1) Các đối tượng trong ADO.NET Các đối tượng được dùng để thao tác dữ liệu - DataSet: Đối tượng này được sử dụng cùng với các điều khiển dữ liệu khác, lưu trữ các kết quả được trả về bởi các đối tượng Commands và Data Adapters. Không như Recordset của ADO và DAO, DatSet thực sự mang lại một View phân cấp của dữ liệu. Bằng việc sử dụng các thuộc tính và các collections trong đối tượng DataSet, ta có thể nhận được toàn bộ các quan hệ (Relations), các Tables riêng biệt, Rows, và Columns. - DataTable: Cho phép thao tác dữ liệu trong một bảng riêng biệt. Data Table tương tự như đối tượng recordset trong ADO. - DataView: Dùng để lọc và sắp xếp dữ liệu, duy trì các Views khác nhau của dữ liệu. Mỗi Data Table có một View mặc định, nó là nơi khởi động Data View mà có thể được sửa đổi và lưu trữ trong DataView khác. - DataRow: Cho phép thao tác các dòng của dữ liệu trong Data Tables. Nó có thể được xét như một nơi lưu trữ của dữ liệu mà ta có thể thực hiện các thao tác thêm, sửa, xóa các bản ghi. Ta có thể quay trở lại Recordset, nơi mà ta sẽ chạy các câu lệnh SQL để cập nhật dữ liệu về Server. - DataColumn: Dùng để nhận các thông tin tại các cột bằng việc sử dụng đối tượng DataColumn. Ta có thể lấy thông tin lược đồ như là dữ liệu bằng việc sử dụng đối tượng này. Ví dụ nếu ta muốn tạo một List box của tên các trường, ta có thể lập thông qua tập DataColumn của các dòng dữ liệu và tìm tất cả các tên trường. - PrimaryKey: Cho phép ta chỉ định khóa chính cho bảng dữ liệu. 2) Các lớp trong ADO.NET Tập bài giảng SQL Server 220 .NET cũng cung cấp các lớp, được gọi Data providers, sử dụng tên miền (namespaces) để làm việc với các đối tượng ADO.NET và cung cấp các truy xuất với dữ liệu. Lõi của các lớp ADO.NET tồn tại trong Namespace System.Data. Namespace này chứa một vài Namespaces con. Phần quan trọng nhất của chúng là các tên miền System.Data.SqlClient và System.Data.OleDb. Chúng cung cấp các classes sử dụng cho việc truy cập SQL Server Databases và OLE (Object Linking and Embedding) DB- compliant databases (phục hồi dữ liệu). Các lớp của OleDb và SqlClient được mô tả trong hình dưới đây: Hình 8.3. Các lớp OleDb và SqlClient Các đối tượng thường được sử dụng để thao tác với dữ liệu. - Command: Tương tự như đối tượng ADO Command, cho phép ta thực hiện các Stored Procedures trong mã nguồn. Khác với phiên bản ADO, ta có thể tạo đối tượng DataReader bằng việc sử dụng phương thức ExecuteReader. - Connection: Dùng để mở kết nối tới Server và Cơ sở dữ liệu mà ta muốn làm việc. Khác với đối tượng ADO Connection, cách thức kết nối phụ thuộc vào đối tượng mà ta muốn làm việc, như là đối tượng DataReader hay DataSet. - DataAdapter: Cho phép tạo các câu lệnh SQL và điền dữ liệu vào Datasets. Nó cũng cho phép tạo các Queries cần thiết, như là Insert, Update, và Delete. - DataReader: Cho phép tạo một lớp dạng Read-only, Forward-only của dữ liệu mà cho phép chúng đặt trên các điều khiển, như ListBox và ComboBox. - Parameter: Cho phép chỉ định các tham số mà các đối tượng DataAdapter có thể chỉ định và sử dụng. Ngoài ra, hai tên miền con khác cũng tồn tại trong tên miền System.Data. Đó là: System.Data.OracleClient và System.Data.Odbc. Tập bài giảng SQL Server 221 Trong đó, Namespace System.Data.OracleClient được sử dụng dành cho các CSDL Oracle. Các lớp SqlClient cung cấp các kết quả tốt nhất khi làm việc với các SQL Server Databases; OracleClient cung cấp thực thi tối ưu khi truy cập vào Oracle Databases. Namespace System.Data.Odbc cung cấp truy cập tới ODBC (Open Database Connectivity) nguồn cơ sở dữ liệu cũ mà không được hỗ trợ bởi công nghệ OleDb. Như vậy, các tên miền System.Data.SqlClient, System.Data.OleDb, System.Data.OracleClient, và System.Data.Odbc được biết như là Data Providers trong ADO.NET. 3) Các lớp SqlClient trong mô hình ADO.NET Danh sách sau chứa các lớp ADO.NET mà chúng sẽ được sử dụng trong quá trình xây dựng ứng dụng sử dụng SQL Server Databases: - SqlConnection - SqlCommand - SqlDataAdapter - SqlParameter - SqlDataReader Đây là các SqlClient cụ thể, trừ Namespace OleDb có rất nhiều close tương đương. Mỗi khi ta muốn sử dụng lớp classes này, ta phải thêm một tham chiếu tới tên miền System.Data. Để đơn giản, ta có thể sử dụng từ khóa Imports, và lúc đó ta không cần phải điền đầy đủ các thành phần tên miền của SqlClient trong code, như đoạn mã sau: Imports System.Data.SqlClient. Nếu ta muốn sử dụng lõi của các lớp ADO.NET, như là DataSet và DataView không cần gõ đầy đủ tên miền, ta cần phải nhập tên miền System.Data, như đoạn code tiếp theo: Imports System.Data. Ta nên quen thuộc với việc nhập các tên miền khác nhau trong các dự án Các lớp chính tồn tại trong Namespace System.Data.SqlClient: a) Lớp SqlConnection: Cung cấp một kết nối tới SQL Server Database. Khi xây dựng một đối tượng SqlConnection, ta có thể chọn để chỉ định một chuỗi kết nối (Connection Strings) như một tham số. Chuỗi kết nối chứa tất cả các thông tin cần thiết để mở một kết nối tới cơ sở dữ liệu. Nếu ta không chỉ định chuỗi kết nối trong khi xây dựng, ta có thể thiết lập nó bằng việc sử dụng thuộc tính SqlConnection.ConnectionString. - Cú pháp: Imports System.Data.SqlClient Dim as String= “Server=; Tập bài giảng SQL Server 222 Initial Catalog=; Integrated Security=; UserName=;Password=” Dim as New SqlConnection(String_Connection_Name) Trong đó: - Object_Connection_Name: Tên đối tượng kết nối - String_Connection_Name: Chuỗi kết nối - Các tham số của chuỗi kết nối (Connection String Parameters): Phương thức để chuỗi kết nối được xây dựng sẽ phụ thộc vào Data Provider mà ta đang sử dụng. Khi truy xuất SQL Server, ta thường cung cấp Server và Database. + Server: Tên của SQL Server mà ta muốn truy xuất. Nó thường là tên của máy tính đang chạy SQL Server. Ta có thể sử dụng (local) hoặc localhost nếu SQL Server trên cùng một máy đang chạy ứng dụng. Nếu sử dụng các thể hiện tên của SQL Server, thì tham số nên chứa tên của máy tính theo sau là đấu gạch chéo ngược và tiếp đó là thể hiện tên của SQL Server. + Initial Catalog: Tên cơ sở dữ liệu muốn kết nối + Integrated Security: True (SSPI)/False chỉ định kết nối theo cơ chế bảo mật của Windows Login (True) hay cơ chế bảo mật của SQL Server (False). + User ID: Tên người dùng sử dụng để kết nối tới cơ sở dữ liệu. Tài khoản với user ID này phải tồn tại trong SQL Server và được phép truy cập đến cơ sở dữ liệu chỉ định. Có nghĩa là khi đó Integrated Security=False. + Password: Là mật khẩu của người dùng đã chỉ định. Ví dụ 1: Kết nối đến cơ sở dữ liệu “QLTS” được đặt tại máy có tên Server là “Admin-0812qix” bằng chế độ bảo mật của Window. Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Ví dụ 2: Kết nối đến cơ sở dữ liệu QLTS được đặt tại máy có tên Server là “Admin-0812qix” bằng chế độ bảo mật của SQL Server với tên người dùng là “LinhGiang” và mật khẩu là “12345”. Imports System.Data.SqlClient Dim strConnection as String= Tập bài giảng SQL Server 223 “Server= Admin-0812qix; Initial Catalog=QLTS; UserName=LinhGiang;Password=12345” Dim Conn as New SqlConnection(strConnection) - Mở và đóng kết nối: Sau khi khởi tạo đối tượng kết nối với một chuỗi kết nối, ta có thể gọi các phương thức của đối tượng SqlConnection như là Open và Close. Cú pháp: .Open() .Close() Ví dụ: Mở, đóng kết nối vừa tạo ở trên cnn.Open() cnn.Close() b) Lớp SqlCommand Lớp SqlCommand đại diện cho các câu lệnh SQL để thực hiện truy vấn dữ liệu lưu trữ. Các câu lệnh là truy vấn Select, Insert, Update, hoặc Delete. Có thể là các chuỗi SQL hoặc gọi một Stored Procedure. Và truy vấn được thực hiện có thể chứa các tham số hoặc không chứa các tham số. Kiến trúc của lớp SqlCommand có một vài biến số, nhưng phương thức đơn giản nhất để khởi tạo một đối tượng SqlCommand với không tham số (Parameters). Tiếp theo, sau khi đối tượng đã được khởi tạo, ta có thể thiết lập các thuộc tính ta cần để thực hiện các thao tác. Hình 8.4. Mối liên hệ giữa lớp Command và các lớp khác Cú pháp: Dim As New SqlCommand() Ví dụ: Tạo một đối tượng Command có tên là cmd Dim cmd As New SqlCommand() - Các thuộc tính của Command + Thuộc tính Connection: Dùng để kết nối đến cơ sở dữ liệu. Để câu lệnh được thực hiện thành công, thì kết nối phải được mở ở thời điểm thực hiện. Tập bài giảng SQL Server 224 + Thuộc tính CommandText: Dùng để chỉ định chuỗi SQL hoặc Stored Procedure sẽ được thực hiện. Hầu hết các cơ sở dữ liệu quy định đặt các giá trị của chuỗi trong cặp dấu “Các giá trị của chuỗi “. + Thuộc tính CommandType: Loại nội dung trong CommandText với các giá trị Text: (mặc định) Một câu lệnh SQL Storedprocedure: Tên một thủ tục nội TableDirect: Khi CommandText là tên bảng + Thuộc tính Paramater: Xác định các tham số cần thiết cho câu lệnh SQL hoặc Stored Procedure. Ta có thể truy cập vào tập các tham số của đối tượng SqlCommand bằng việc chỉ định thuộc tính Parameters. Sau khi truy cập vào tập tham số, ta có thể sử dụng các thuộc tính và các phương thức của nó để tạo một hoặc nhiều hơn các tham số trong tập các tham số. Mục đích của việc sử dụng tham số là khi một vài giá trị trong câu lệnh chỉ biết khi thực hiện câu lệnh hoăc cần thực hiện câu lệnh nhiều lần với các giá trị khác nhau. Các bước thực hiện:  Tham số hóa câu lệnh: ? hoặc @[tên tham số].  Tạo các parameters tương ứng cho command.  Đặt giá trị cho các parameter mỗi khi dùng command thực hiện câu lệnh. - Các phương thức của Command + Phương thức ExecuteNonQuery: Để thực thi các câu lệnh SQL: Insert, Update, Delete, Stored Procedure, + ExcuteReader: Phương thức này nên sử dụng khi thực thi phát biểu Select, mẫu tin trả về trong SqlDatareader. Chú ý, lớp DataReader là chỉ đọc, dữ liệu theo một chiều ngang theo một chiều. + Phương thức ExcuteScalar: Thực hiện lệnh Command và chỉ trả về cột đầu tiên của dòng đầu tiên. Thường thực hiện theo các hàm thống kê. Ví dụ 1: Thực hiện việc thêm một ngành học vào bảng Ngành với mã ngành là “NH012”, tên ngành là “Khoa học máy tính”, chỉ tiêu tuyển sinh là 120. Cách 1: Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Tập bài giảng SQL Server 225 Dim Comm As New SqlCommand() Comm.Connection = Conn Comm.CommandText = “INSERT INTO Nganh(Man,Tenn, chitieu)” + “VALUES(„NH012‟ „Khoa học máy tính‟,120)” Comm.CommandType = Text Conn.Open() Comm.ExecuteNonQuery() Conn.Close() Cách 2: Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Dim Comm As New SqlCommand() Comm.Connection = Conn Comm.CommandText = “INSERT INTO Nganh(Man,Tenn, chitieu)” + “VALUES(@man, @tenn, @ct)” Comm.CommandType = Text Comm.Parameters.Add(“@man”)=“NH012” Comm.Parameters.Add(“@tenn”)=“Khoa học máy tính” Comm.Parameters.Add(“@ct”)=120 Conn.Open() Comm.ExecuteNonQuery() Conn.Close() Ví dụ 2: Đưa ra số lượng các thí sinh đã đăng kí dự thi Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Dim Comm As New SqlCommand() Comm.Connection = Conn Comm.CommandText = “Select Count(*) From Thisinh” Tập bài giảng SQL Server 226 Dim Comm As New SqlCommand(strSQL, Conn) Conn.Open() Dim Soluong As Integer=Comm.ExecuteScalar() MsgBox(“Số lượng khách hàng” & Cstr(Soluong)) Conn.Close() c) Lớp SqlDataAdapter: Data Adapters hoạt động như một cầu nối giữa Data Source và các đối tượng lưu dữ liệu trong bộ nhớ, như là DataSet. Để truy xuất dữ liệu nguồn, chúng sử dụng các đối tượng Command. Các đối tượng Command này liên quan đến các kết nối. Vì vậy, Data Adapter này dựa vào các đối tượng Command và Connection để truy xuất và điều khiển dữ liệu nguồn. Hình 8.5. Lớp SqlDataAdapter Cú pháp: Dim As New SqlDataAdapter() Ví dụ: Tạo một đối tượng Data Adapter có tên là da Dim da As New SqlDataAdapter() - Các thuộc tính của SqlDataAdapter + Thuộc tính UpdateCommand: Dùng để cập nhật dữ liệu vào DataSet hoặc DataTable. + Thuộc tính DeleteCommand: Dùng để xóa bản ghi vào DataSet hoặc DataTable. + Thuộc tính InsertCommand: Dùng để thêm mới bản ghi vào DataSet hoặc DataTable. + Thuộc tính SelectCommand: Dùng để đưa dữ liệu vào từ SQL Server vào DataSet hoặc DataTable. Khi ta muốn đọc dữ liệu từ kho dữ liệu, đầu tiên ta phải thiết lập thuộc tính SelectCommand của lớp SqlDataAdapter. Thuộc tính này là đối tượng sqlCommand và nó được dùng để chỉ định dữ liệu được select và select dữ liệu như thế nào. Vì vậy, thuộc tính SelectCommand cũng có các thuộc tính của nó. Ta cần thiết lập chúng như là thiết lập các thuộc tính trên các câu lệnh thông thường. Hai thuộc tính thông dụng đó là: Tập bài giảng SQL Server 227  Connection: Thiết lập đối tượng SqlConnection để truy xuất vào Data Store.  CommandText: Thiết lập các câu lệnh SQL hoặc tên Stored Procedure được sử dụng để tìm kiếm dữ liệu. Ví dụ 1: Thiết lập SelectCommand với một chuỗi SQL để đưa ra thông tin gồm số báo danh, họ tên, ngày sinh của các thí sinh có quê quán là „Nam Định‟ Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Dim da As New SqlDataAdapter() da.SelectCommand = New SqlCommand() da.SelectCommand.Connection = cnn da.SelectCommand.CommandText = “SELECT sbd, hoten, ngaysinh FROM Thisinh Where quequan=‟Nam Định‟“ Ví dụ 2: Thiết lập SelectCommand với một Stored Procedure có tên là sp_SelectTS. Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Dim da As New SqlDataAdapter() da.SelectCommand.Connection = Conn da.SelectCommand.CommandText = “sp_SelectTS” da.SelectCommand.CommandType= CommandType.StoredProcedure - Các phương thức của SqlDataAdapter Phương thức Fill: Sử dụng SelectCommand để lấy dữ liệu từ dữ liệu nguồn đưa vào DataSet. Cú pháp: SqlDataAdapter.Fill(DataSet,String) Trong đó: + DataSet: Xác định một đối tượng DataSet hợp lệ mà dữ liệu được lưu trữ ở trong đó. Tập bài giảng SQL Server 228 + String: Tên của bảng có trong DataSet. Chú ý rằng, một DataSet có thể chứa nhiều bảng. Ta có thể sử dụng bất cứ tên nào ta muốn, nhưng thường tốt nhất là sử dụng tên của các bảng nơi mà dữ liệu trong cơ sở dữ liệu đến. Ví dụ: Imports System.Data.SqlClient Dim strConnection as String= “Server= Admin-0812qix; Initial Catalog=QLTS; Integrated Security=True” Dim Conn as New SqlConnection(strConnection) Dim da As New SqlDataAdapter() da.SelectCommand.Connection = Conn da.SelectCommand.CommandText = “sp_SelectTS” da.SelectCommand.CommandType= CommandType.StoredProcedure Dim Ds as DataSet = New DataSet() Da.Fill(Ds,“Thisinh”) Phương thức Fill sử dụng thuộc tính SelectCommand.Connection để kết nối tới cơ sở dữ liệu. Nếu kết nối đã được mở, Data Adapter sẽ sử dụng nó để thực hiện SelectCommand. Và nếu như Connection đã đóng thì Data Adapter sẽ mở nó, thực hiện SelectCommand, và sau đó đóng trở trở lại. Bây giờ ta đã có dữ liệu trong bộ nhớ, và có thể bắt đầu thao tác nó không phụ thuộc vào Data Source. Tuy nhiên, lớp DataSet không có Sql tại vị trí bắt đầu tên lớp của nó. Bởi vì DataSet không nằm trong namespace System.Data.SqlClient, nó nằm trong lớp cha Namespace System.Data. Các lớp trong tên miền này có liên quan căn bản với thao các dữ liệu trong bộ nhớ. d) Lớp DataSet: Lớp DataSet được dùng để lưu trữ dữ liệu được lấy từ một kho dữ liệu và lưu trữ dữ liệu trong bộ nhớ trên máy khách. Đối tượng DataSet chứa một tập các bảng, các mối liên hệ và các ràng buộc thích hợp với dữ liệu đọc từ kho dữ liệu. Nó hoạt động như một bộ máy cơ sở dữ liệu gọn nhẹ, cho phép ta lưu trữ dữ liệu, sửa đổi dữ liệu và chạy các truy vấn dựa vào việc sử dụng đối tượng DataView. Dữ liệu trong DataSet không được kết nối từ kho dữ liệu, và ta có thể làm việc với dữ liệu độc lập với kho dữ liệu. Ta có thể thao tác dữ liệu trong đối tượng DataSet bằng việc thêm, sửa, xóa bản ghi. Ta có thể áp các thay đổi này quay trở lại kho dữ Tập bài giảng SQL Server 229 liệu gốc sau khi sử dụng Data Adapter. Dữ liệu trong đối tượng DataSet được duy trì trong Extensible Markup Language (XML), nghĩa là ta có thể lưu trữ DataSet như là một file hoặc đơn giản chuyển nó trên Network. XML được bảo vệ từ ta, những người phát triển, và chúng ta không bao giờ nên sửa trực tiếp XML. Tất cả các thao tác sửa XML được thực hiện thông qua các thuộc tính và các phương thức của lớp DataSet. Nhiều nhà phát triển thích sử dụng XML và lựa chọn để thao tác XML biểu diễn trực tiếp DataSet, nhưng điều này không cần thiết. Giống như bất cứ bản tài liệu XML nào, DataSet có một giản đồ-schema (một file cấu trúc của dữ liệu trên một hoặc nhiều XML files). Khi ta sinh ra một kiểu Dataset dùng wizard, XML Schema Definition (XSD) file được thêm vào Solution Explorer. File này là một XML schema cho dữ liệu QLDiemSVDataSet chứa nó. Từ đây, Visual Studio .NET tạo ra một lớp kế thừa từ DataSet và sử dụng giản đồ cụ thể này. Một lược đồ DataSet chứa các thông tin về các bảng dữ liệu, mối liên hệ và các ràng buộc được lưu trữ trong DataSet. Thêm nữa, nó được bảo vệ từ phía ta, và ta không cần biết XML làm việc với DataSet. Các phương thức của DataSet: - Thêm một đối tượng DataTable .Tables.Add() - Xóa một đối tượng .Tables.Remove() .Tables.RemoveAt() - Loại bỏ tất cả đối tượng DataTable: .Tables.Clear() - Kiểm tra sự tồn tại: .Tables.Contains() - Kiểm tra tồn tại và có thể xóa được .Tables.CanRemove() - Đếm số lượng DataTable: .Tables.Count() - Ghi ra file XML: .WriteXml(ten_file_xml) - Đọc từ file XML: .ReadXml(ten_file_xml) e) Lớp DataView Lớp DataView được sử dụng để sắp xếp, lọc, tìm kiếm, sửa dữ liệu từ DataSet. Một DataView là bindable, nghĩa là nó có thể bị buộc vào các điều khiển giống như cách DataSet bị buộc vào các điều khiển. Một DataSet có thể chứa một số các đối Tập bài giảng SQL Server 230 tượng DataTable; khi ta sử dụng phương thức Fill của lớp SqlDataAdapter để thêm dữ liệu vào DataSet, như vậy ta đã thực sự đang tạo một đối tượng DataTable bên trong DataSet này. DataView cung cấp view thông dụng của DataTable; ta có thể sắp xếp và lọc dữ liệu, như ta thực hiện trên truy vấn SQL. Ta có thể tạo một DataView từ dữ liệu được chứa trong DataTable mà đang chỉ chứa dữ liệu mà ta muốn hiển thị. Ví dụ, nếu dữ liệu trong DataTable chứa tất cả các thí sinh được sắp xếp bởi họ tên, ta có thể tạo một DataView chứa tất cả khách hàng được sắp xếp bởi họ tên. Hoặc, nếu muốn, ta có thể tạo một DataView chỉ chứa một vài thí sinh chứa tên nào đó. Mặc dù ta có thể hiện thị dữ liệu trong DataView trong nhiều cách khác nhau từ DataTable cơ bản, nó vẫn là cùng dữ liệu. Các thay đổi với DataView sẽ ảnh hưởng tới DataTable cơ bản một cách tự động và các thay đổi với DataTable cơ bản tự động ảnh hưởng bất kỳ đối tượng DataView mà đang hiển thị DataTable đó. Kiến trúc cho một lớp DataView khởi tạo một thể hiện mới của lớp DataView và lấy DataTable là một đối số. Cú pháp: Dim ODV = New DataView(ODS.Tables(“Name_Table”)) Trong đó: - ODV là đối tượng DataView - ODS là đối tượng DataSet - Name_Table: Tên bảng Ví dụ: Tạo một đối tượng DataView và khởi tạo nó đang sử dụng bảng Thisinh từ DataSet có tên là ODS. Dim ODV = New DataView(ODS.Tables(“Thisinh”)) Các thuộc tính của DataView: - Thuộc tính Sort: Được dùng để sắp xếp dữ liệu trong DataView bằng cách chỉ định cột hoặc các cột mà ta muốn sắp xếp. Cú pháp: ODV.Sort=”Name_Columns ASC/DESC” Ví dụ: Sắp xếp danh sách thí sinh theo chiều giảm dần của điểm toán, điểm lý, điểm hóa. ODV.Sort = “dtoan, dly, dhoa DESC” - Thuộc tính RowFilter: Xác định một điều kiện lọc mà có thể áp dụng được trên DataView, chỉ những hàng thỏa mãn điều kiện sẽ được giữ lại trên DataView. Cú pháp cũng tương tự như mệnh đề SQL WHERE. Ta có thể sử dụng các phép toán logic And và Or trong biểu thức điều kiện Tập bài giảng SQL Server 231 Cú pháp: ODV.RowFilter =”Expression_Condition” Trong đó: Expression_Condition là biểu thức điều kiện. Ví dụ: Đưa ra danh sách thí sinh có họ “Lê” ODV.RowFilter =”Hoten like „Lê%‟” Các phương thức: - Phương thức Find: Nếu ta muốn tìm kiếm cho một hàng dữ liệu trong DataView, ta sử dụng phương thức Find. Phương thức Find tìm kiếm dữ liệu trong cột khóa sắp xếp của DataView. Nhưng trước khi gọi phương thức Find, ta phải sắp xếp DataView trên cột chứa dữ liệu mà ta muốn tìm kiếm. Cột trong DataView đã được sắp xếp trở thành cột khóa sắp xếp trong đối tượng DataView. Cú pháp: intPosition = objDataView.Find(“Value”) Trong đó: + intPosition: là vị trí tìm thấy, có giá trị nguyên. + Value: Giá trị cần tìm Phương thức Find tìm kiếm và trả về vị trí của bản ghi trong DataView. Trong trường hợp ngược lại, DataView trả về giá trị Null nếu không tìm thấy. Nếu phương thức Find tìm thấy một bản khớp thì nó sẽ dừng tìm kiếm và trả về vị trí của bản ghi đầu tiên tìm thấy. Nếu ta muốn có nhiều hơn một bản ghi trong Data Store, ta phải lọc dữ liệu trong DataView, dữ liệu của ta sẽ được hiển thị. Phương thức Find không phân biệt dạng chữ hoa, chữ thường. Phương thức Find tìm chính xác từng cụm từ, nghĩa là ta phải nhập toàn bộ cụm từ đó. Ví dụ: Tìm thí sinh có họ tên là Nguyễn Văn An. Dim intPosition as Integer ODV.Sort = “Hoten” intPosition = objDataView.Find(“Nguyễn Văn An”) DataView có thể được sắp xếp trên nhiều hơn một cột tại cùng một thời điểm. Nếu ta muốn sắp xếp nhiều hơn một cột, ta cần cung cấp một mảng các giá trị để phương thức Find thay cho chỉ một giá trị đơn. Ví dụ: Tìm kiếm thí sinh „Nguyễn Văn An‟ quê quán „Nam Định‟. Dim intPosition As Integer Dim arrValues(1) As Object objDataView.Sort = “Hoten,quequan” arrValues(0)= “Nguyễn Văn An” Tập bài giảng SQL Server 232 arrValues(1) = “Nam Định” intPosition = objDataView.Find(arrValues) 8.2. Ví dụ minh họa Thiết kế và lập trình các Form cho bài toán quản lý điểm trên nền Visual Basic.Net. Trên form có các nút điều khiển: Di chuyển, tìm kiếm, thêm, sửa, xóa, thoát. Ví dụ 1: Thiết kế và lập trình Form quản lý thông tin của sinh viên theo mẫu sau Hình 8.6. Form quản lý thông tin sinh viên Bước 1: Chọn File/New Projects/Visual Basic/Windows/Windows Forms Application/Nhập tên dự án tại hộp Name. Hình 8.7. Cửa sổ tạo dự án Tập bài giảng SQL Server 233 Bước 2: Tạo và thiết kế Form Quản lý thông tin sinh viên (frm_sinhvien) STT Đối tƣợng Thuộc tính Giá trị 1 Form Name Frm_Sinhvien Text Quản lý thông tin sinh viên 2 Lable Text Mã sinh viên 3 Lable Text Họ tên 4 Lable Text Ngày sinh 5 Lable Text Giới tính 6 Lable Text Quê quán 7 Lable Text Mã lớp 8 Text Box Name Txt_masv 9 Text Box Name Txt_hoten 10 Text Box Name Txt_ns 11 Text Box Name Txt_gt 12 Text Box Name Txt_qq 13 Text Box Name Txt_mal 14 Button Name Btn_MoveFirst Text Về đầu 15 Button Name Btn_MovePre Text Trước 16 Button Name Btn_MoveNext Text Tiếp 17

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

  • pdftap_bai_giang_sql_server.pdf