Vietnamese version Tài ADO.Net hướng dẫn tutorial

12 492 0
Vietnamese version Tài ADO.Net hướng dẫn tutorial

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Introduction ADO.NET thư viện hướng đối tượng (OOP) cho phép bạn tương tác với liệu nguồn Thông thường liệu nguồn sở liệu (database), file text, exel XML Chúng ta xem xét tới cách ADO.NET làm việc với database Data Providers Chúng ta biết ADO.NET cho phép tương tác với loại liệu kiểu database Mỗi loại liệu cần cách thức khác để truy xuất Các loại liệu cũ sử dụng giao thức ODBC, loại liệu sử dụng giao thức OleDb Vì cần có thư viện thống để làm việc với chúng, lý mà ADO.NET tạo ADO.NET cung cấp cách thức chung để tương tác với nguồn liệu, với loại liệu bạn phải sử dụng thư viện khác Các thư viện gọi Data Provider thường đặt tên theo giao thức loại liệu mà chúng cho phép bạn truy xuất Table liệt kê data provider phổ biến, tiền tố (prefix) API mà chúng sử dụng kiểu liệu mà bạn làm việc Provider Name API prefix Data Source Description ODBC Data Provider Odbc Data Sources with an ODBC interface Normally older data bases OleDb Data Provider OleDb Data Sources that expose an OleDb interface, i.e Access or Excel Oracle Data Provider Oracle For Oracle Databases SQL Data Provider Sql For interacting with Microsoft SQL Server Borland Data Provider Bdp Generic access to many databases such as Interbase, SQL Server, IBM DB2, and Oracle Table ADO.NET Data Providers are class libraries that allow a common way to interact with specific data sources or protocols The library APIs have prefixes that indicate which provider they support Các đối tượng ADO.NET Mô hình ADO.NET ADO.NET bao gồm nhiều đối tượng bạn dùng với liệu Phần giới thiệu vài đối tượng bạn sử dụng Theo tiến độ viết sau, bạn khám phá thêm nhiều đối tượng ADO.NET cách chúng sử dụng lesson riêng Các đối tượng bắt buộc bạn phải biết để làm việc với liệu dùng ADO.NET SqlConnection Để tương tác với database, bạn phải có kết nối tới Kết nối giúp xác định database server, database name, user name, password, tham số cần thiết để kết nối tới database Một đối tượng connection dùng đối tượng command chúng biết database để thực thi lệnh SqlCommand Quá trình tương tác với database cần phải biết hành động bạn muốn xảy Điều thực đối tượng command Bạn dùng đối tượng command để gửi câu lệnh SQL tới database Một đối tượng command dùng đối tượng connection để xác định database truy xuất Bạn dùng đối tượng command riêng lẻ để thực thi lệnh trực tiếp, để gắn tham chiếu đối tượng command cho SqlDataAdapter – đối tượng giữ command làm việc nhóm liệu đề cập tới phần SqlDataReader Nhiều thao tác liệu đòi hỏi bạn lấy luồng liệu để đọc Đối tượng data reader cho phép bạn lấy kết câu lệnh SELECT từ đối tượng command Để tăng hiệu suất, liệu trả từ data reader luồng liệu fast forward-only Có nghĩa bạn lấy liệu từ luồng theo thứ tự định Mặc dù điều có lợi mặt tốc độ, bạn cần phải thao tác liệu, DataSet đối tượng tốt để làm việc DataSet Đối tượng DataSet thể liệu nhớ Chúng chứa nhiều đối tượng DataTable, bên DataTable lại có nhiều column row, giống database table thông thường Bạn chí định nghĩa liệu table để tạo quan hệ parent-child DataSet thiết kế đặc biệt để giúp quản lý liệu nhớ để hỗ trợ thao tác không cần kết nối (disconnected) liệu DataSet đối tượng dùng tất Data Provider, lý Data Provider prefix tên gọi SqlDataAdapter Đôi lúc liệu mà bạn làm việc read-only bạn cần thay đổi liệu nguồn Vài trường hợp cần lưu trữ tạm liệu nhớ để hạn chế truy xuất đến database Data adapter làm điều dễ dàng cách giúp bạn quản lý liệu chế độ ngắt kết nối Data adapter đổ vào DataSet đọc liệu thực thay đổi liệu lượt vào database Data adapter chứa tham chiếu đến đối tượng connection mở/đóng kết nối tự động đọc ghi liệu vào database Hơn nữa, data adapter chứa đối tượng command cho thao tác SELECT, INSERT, UPDATE DELETE liệu Bạn có data adapter định nghĩa cho table DataSet quản lý giao tiếp với database cho bạn Tất bạn cần làm cho data adapter nạp ghi vào database Tổng kết ADO.NET kĩ thuật NET để thao tác với nguồn liệu Bạn có vài Data Provider, cho phép bạn giao tiếp với nguồn liệu khác nhau, dựa giao thức mà chúng dùng kiểu database Không cần quan tâm đến điều này, với Data Provider sử dụng, bạn dùng đối tượng tương tự để thao tác với liệu Đối tượng SqlConnection cho phép bạn quản lý kết nối đến nguồn liệu SqlCommand cho phép bạn gửi lệnh đến liệu Để đọc liệu nhanh theo chế forward-only, sử dụng SqlDataReader Nếu bạn muốn làm việc với liệu ngắt kết nối, dùng DataSet thực việc đọc ghi đến liệu nguồn SqlDataAdalter Đối tượng SqlConnection Giới thiệu Điều bạn cần tạo kết nối để xác định database cần làm việc Nó quản lý tất logic mức thấp kết hợp với giao thức đặc trưng database Công việc mà bạn cần làm tạo đối tượng connection, mở kết nối đóng kết nối sau hoàn thành công việc Phải hiểu kết nối tài nguyên quan trọng Mỗi kết nối tới server giống đường số lượng chúng nằm mức giới hạn Ứng dụng bắt giữ kết nối, điều gây ảnh hưởng nghiêm trọng đến hiệu suất vận hành ứng dụng Mô hình sau cho ta thấy cách mà SqlConnection sử dụng đối tượng ADO.NET khác: Tạo đối tượng SqlConnection Một đối tượng SqlConnection giống đối tượng khác C# Bạn cần khai báo thể SqlConnection, đây: SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=UEH;Integrated Security=YES"); Đối tượng SqlConnection sử dụng constructor với tham số kiểu string Tham số gọi chuỗi kết nối (connection string) Parameter Name Description Data Source Identifies the server Could be local machine, machine domain name, or IP Address Initial Catalog Database name Integrated Security Set to SSPI to make connection with user's Windows login User ID Name of user configured in SQL Server Password Password matching SQL Server User ID Table ADO.NET Connection String chứa cặp key/value để xác định cách tạo kết nối đến database Chúng bao gồm vị trí, tên database và chế độ bảo mật Integrated Security bảo mật bạn làm việc máy đơn Tuy nhiên, bạn thường xuyên cần phải định rõ mức bảo mật dựa SQL Server User ID với quyền hạn xác định cho ứng dụng bạn sử dụng Đoạn mã sau sử dụng connection string với tham số User ID Password: SqlConnection conn = new SqlConnection( “Data Source=(local);Initial Catalog=UEH; User ID = sa; Password = @123456”); Lưu ý: Data Source gán cho DatabaseServer để bạn định danh database máy khác, thông qua mạng LAN, qua Internet Ngoài ra, User ID Password thay cho tham số Integrated Security Sử dụng SqlConnection Mục đích việc tạo đối tượng SqlConnection để mã lệnh ADO.NET khác làm việc với database Các đối tượng ADO.NET khác, SqlCommand SqlDataAdapter dùng connection tham số Quá trình sử dụng SqlConnection gồm bước sau: Tạo SqlConnection Mở connection Truyền connection cho đối tượng ADO.NET khác Thực thao tác database với đối tượng ADO.NET Đóng connection Bạn mở connection cách gọi phương thức Open đối tượng SqlConnection Bất kì thao tác thực với SqlCommand sử dụng connection Mã lệnh sử dụng connection SqlCommand – đối tượng thực truy vấn đến bảng Accounts database Tập kết trả dạng SqlDataReader Các đối tượng ADO.net khác sử dụng SqlConnection để biết database truy xuất Khi bạn sử dụng xong đối tượng connection, bạn phải đóng Thực thất bại gây hậu nghiêm trọng đến hiệu suất khả ứng dụng Ví dụ cho thấy cách để dùng đối tượng SqlConnection với SqlDataReader – đối tượng yêu cầu bạn phải thực lệnh đóng connection rõ ràng Tuy nhiên, dùng mô hình liệu ngắt kết nối, bạn không cần phải mở đóng connection thủ công The SqlCommand Object Giới thiệu Đối tượng SqlCommand cho phép bạn chọn kiểu tương tác mà bạn muốn thực với database Ví dụ, bạn thực lệnh select, insert, modify, delete dòng table database, để lấy giá trị đơn từ database, số dòng table Đối tượng dùng để hỗ trợ mô hình quản lý liệu ngắt kết nối (disconnected) Tạo đối tượng SqlCommand Tương tự đối tượng C# khác, bạn tạo đối tượng SqlCommand cách khai báo thể nó: SqlCommand cmd = new SqlCommand("select Name from Accounts ", conn); Dòng điển hình để tạo đối tượng SqlCommand Nó lấy tham số chuỗi lệnh bạn cần thực thi tham chiếu đến đối tượng SqlConnection SqlCommand có vài overload, mà bạn thấy ví dụ sau Querying Data – Truy vấn liệu Khi dùng lệnh SQL select, bạn lấy liệu từ database để hiển thị Để làm điều với SqlCommand, bạn cần dùng phương thức ExecuteReader() để trả đối tượng SqlDataReader Ví dụ sau cho thấy cách dùng SqlCommand để lấy đối tượng SqlDataReader: // Instantiate a new command with a query and connection SqlCommand cmd = new SqlCommand("select Name from Accounts", conn); // Call Execute reader to get query results SqlDataReader dataReader = cmd.ExecuteReader(); Trong ví dụ trên, tạo đối tượng SqlCommand, truyền chuỗi lệnh đối tượng connection vào constructor Sau lấy đối tượng SqlDataReader cách gọi phương thức ExecuteReader() đối tượng SqlCommand, cmd Inserting Data – Chèn liệu Để chèn liệu vào database, dùng phương thức ExecuteNonQuery() đối tượng SqlCommand Đoạn code sau cho thấy cách chèn liệu vào bảng database: // prepare command string string insertString = @"INSERT INTO Accounts(AccountId, Url, Name, Friends, IsValid) VALUES (505513079, 'https://www.facebook.com/UEH', N'Đại học Chính quy', 150000, 1)"; // Instantiate a new command with a query and connection SqlCommand cmd = new SqlCommand(insertString, conn); // Call ExecuteNonQuery to send command cmd.ExecuteNonQuery(); Để thực thi lệnh này, cần đơn giản gọi phương thức ExecuteNonQuery() đối tượng SqlCommand, cmd Updating Data Phương thức ExecuteNonQuery dùng để cập nhật liệu, đoạn mã sau: // prepare command string string updateString = @"UPDATE Accounts SET Name= N'Đại học Kinh Tế’ WHERE AccountId = 505513079"; // Instantiate a new command with a query and connection SqlCommand cmd = new SqlCommand(updateString, conn); // Call ExecuteNonQuery to send command cmd.ExecuteNonQuery(); Deleting Data Phương thức ExecuteNonQuery dùng để xóa liệu, đoạn mã sau // prepare command string string deleteString = @"DELETE FROM Accounts WHERE AccountId = 505513079"; // Instantiate a new command with a query and connection SqlCommand cmd = new SqlCommand(deleteString, conn); // Call ExecuteNonQuery to send command cmd.ExecuteNonQuery(); Getting Single values Đôi lúc tất bạn cần từ database giá trị đơn, giá trị đếm, tổng, trung bình, giá trị kết hợp khác từ liệu Thực thi phương thức ExecuteReader() để lấy đối tượng SqlDataReader tính toán kết mã lệnh bạn cách tốt để làm điều Cách tốt để database làm công việc trả giá trị bạn cần Ví dụ sau cho thấy cách làm điều với phương thức ExecuteScalar() The SqlDataReader Giới thiệu Một SqlDataReader đối tượng phù hợp để đọc liệu cách hiệu Như tên gọi, bạn dùng để ghi liệu Bạn đọc liệu từ đối tượng SqlDataReader theo hướng forward-only thứ tự định Mỗi lần đọc vài liệu, bạn phải lưu cần thiết bạn quay trở lại đọc lần Kiểu thiết kế forward-only SqlDataReader để giúp hoạt động nhanh Nó di chuyển trực tiếp đến dòng liệu vị trí ghi vào liệu nguồn Do đó, bạn yêu cầu đọc nhóm liệu lần cần phương pháp nhanh nhất, SqlDataReader lựa chọn tốt Tạo đối tượng SqlDataReader Có chút khác biệt để lấy thể SqlDataReader so với đối tượng ADO.NET khác Bạn phải gọi phương thức ExecuteReader() đối tượng SqlCommand, như: SqlDataReader dataReader = sqlCommand.ExecuteReader(); Phương thức ExecuteReader() đối tượng SqlCommand, trả thể SqlDataReader Đối tượng SqlCommand chứa tham chiếu đến connection câu lệnh SQL cần thiết để SqlDataReader lấy liệu Đọc liệu SqlDataReader trả liệu qua luồng liên tục Để đọc liệu, bạn phải lấy liệu từ bảng dòng (row-by-row) Mỗi lần dòng đọc, dòng trước không hiệu lực Để đọc lại dòng đó, bạn cần phải tạo thể SqlDataReader đọc xuyên qua luồng liệu lần Để đọc từ luồng liệu trả SqlDataReader lặp qua dòng với vòng lặp while Working with Disconnected Data - The DataSet and SqlDataAdapter Giới thiệu Một DataSet đối tượng chứa liệu nhớ gồm nhiều bảng DataSet chứa liệu không tương tác với nguồn liệu Thay vào đó, SqlDataAdapter dùng để quản lý kết nối với nguồn liệu cho chế độ làm việc disconnected SqlDataAdapter mở kết nối cần thiết đóng sau tác vụ hoàn thành Ví dụ, SqlDataAdapter thực tác vụ sau, đổ liệu vào DataSet: Mở kết nối Đổ liệu vào DataSet (Fill) Đóng kết nối Và thực công việc sau, cập nhật liệu nguồn với thay đổi DataSet: • • • • • • Mở kết nối Ghi thay đổi từ DataSet vào liệu nguồn (Update) Đóng kết nối Giữa hai thao tác Fill Update, kết nối với nguồn liệu đóng lại bạn tự ghi, đọc liệu với DataSet Đây chế mô hình làm việc với disconnected data Bởi ứng dụng sẵn sàng kết nối cần thiết, ứng dụng trở nên dễ phát triển Tạo đối tượng DataSet Không có đặc biệt tạo DataSet Bạn cần tạo thể mới, giống đối tượng nào: DataSet dsAccounts = new DataSet(); Constructor DataSet không yêu cầu tham số Tuy nhiên có overload chấp nhận chuỗi đại diện cho tên DataSet, dùng bạn cần serialize liệu thành XML Bây giờ, ta có DataSet rỗng cần SqlDataAdapter để nạp liệu cho Tạo SqlDataAdapter SqlDataAdapter chứa lệnh SQL đối tượng connection để đọc ghi liệu Bạn khởi tạo với câu SQL select đối tượng connection: SqlDataAdapter daAccounts = new SqlDataAdapter(“SELECT AccountId, Name FROM Account”, conn); Dòng mã tạo đối tượng SqlDataAdapter Câu SQL select xác định liệu đọc vào DataSet Đối tượng connection, nên khởi tạo từ trước, không mở Đó công việc SqlDataAdapter để mở đóng connection phương thức Fill() Update() gọi SqlDataAdapter tất lệnh cần thiết để tương tác với liệu nguồn Dòng mã xác định câu lệnh select, không cho thấy câu lệnh insert, update delete Chúng thêm vào SqlDataAdapter sau khởi tạo Có hai cách để thêm lệnh insert, update, delete: thông qua property SqlDataAdapter với SqlCommandBuilder Đây cách để thêm lệnh vào SqlDataAdapter với SqlCommandBuilder SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daAccounts); Lưu ý dòng mã khởi tạo đối tượng SqlCommandBuilder với constructor cần tham số SqlDataAdapter Điều giúp SqlCommandBuilder biết đối tượng SqlDataAdapter để thêm lệnh vào SqlCommandBuilder đọc câu SQL select (lấy từ SqlDataAdapter), từ suy lệnh insert, update delete, sau gán lệnh vào property Insert, Update, Delete SqlDataAdapter tương ứng SqlCommandBuilder làm việc bạn làm câu select đơn giản bảng Tuy nhiên, bạn cần kết hợp hai nhiều bảng thực thi stored procedure, không làm việc Display the Update, Insert, and Delete commands that were automatically generated by the SqlCommandBuilder object Update command by the Command Builder: cmdBuilder.GetUpdateCommand().CommandText; Insert command by the Command Builder: cmdBuilder.GetInsertCommand().CommandText; Delete command by the Command Builder: cmdBuilder.GetDeleteCommand().CommandText; Đổ liệu vào DataSet Để đổ liệu vào DataSet bạn cần dùng phương thức Fill() SqlDataAdapter, sau: daAccounts.Fill(dsAccounts, “Accounts”); Phương thức Fill(), dòng lấy hai tham số: DataSet tên bảng DataSet phải tạo trước bạn đổ liệu vào Tham số thứ hai tên bảng tạo DataSet Bạn đặt tên cho bảng Thông thường, để tên bảng trùng với tên gốc database Tuy nhiên, câu select SqlDataAdapter chứa lệnh join, bạn cần phải đặt tên rõ ràng khác cho bảng Phương thức Fill() có overload chấp nhận tham số DataSet Trong trường hợp này, bảng tạo có tên mặc định “table1” cho bảng Số tăng dần (table2, table3,…,tableN) cho bảng thêm vào DataSet tên bảng không phương thức Fill() Sử dụng DataSet Một DataSet gắn liệu vào DataGrid ASP.NET Windows form Đây ví dụ gán DataSet cho Windows forms DataGrid: dgAccounts.DataSource = dsAccountss; dgAccounts.DataMember = “Accounts”; Điều làm, đoạn mã trên, gán DataSet cho property DataSource DataGrid Điều giúp DataGrid biết có liệu gắn vào, nhiên bạn thấy dấu ‘+’ GUI DataSet giữ nhiều bảng DataGrid cho phép bạn mở rộng để xem bảng Để định bảng dùng, gán property DataMember DataGrid tên bảng Trong ví dụ, gán tên Customers, tên trùng với tên tham số thử hai phương thức Fill() SqlDataAdapter Đây lý thích đặt tên bảng phương thức Fill(), giúp đoạn mã dễ đọc Cập nhật thay đổi Sau thay đổi thực liệu, bạn cần ghi lại vào database Dòng mã sau cho thấy cách dùng phương thức Update SqlDataAdapter để cập nhật thay đổi vào database daAccounts.Update(dsAccounts, “Accounts”); Phương thức Update() gọi thể SqlDataAdapter có tham số đối tượng gọi phương thức Tham số thử hai phương thức Update() bảng DataSet cập nhật Bảng chứa danh sách dòng liệu bị thay đổi property Insert, Update, Delete SqlDataAdapter chứa lệnh SQL dùng để thực thay đối database

Ngày đăng: 03/04/2016, 22:01

Từ khóa liên quan

Mục lục

  • Introduction

    • Table 1. ADO.NET Data Providers are class libraries that allow a common way to interact with specific data sources or protocols. The library APIs have prefixes that indicate which provider they support.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan