ADO LÀ GÌ

  -  

Công nghệ càng ngày càng phát triển theo thời hạn, nhiều framework cũng từ bỏ này mà được xuất hiện, cách kết nối đại lý tài liệu cũng không ngoại lệ. Hiện giờ có khá nhiều framework miễn phí hỗ trợ họ kết nối các đại lý tài liệu như Entity Framework, Dapper, NHibernate... Việc sử dụng hầu như framework trên góp chúng ta tiết kiệm được không hề ít thời gian.

Vậy trước đây, đa số lập trình sẵn viên áp dụng technology gì để cung cấp kết nối các đại lý dữ liệu? Hôm nay mình xin chia sẻ cùng với chúng ta một nghệ thuật kết nối cho tới các đại lý dữ liệu đó chính là ADO.NET

1. ADO.NET là gì?

ADO.NET là tập phù hợp các thư viện được cung cấp bởi Microsoft nhằm giúp cho ứng dụng có thể thao tác (select, insert, update, delete) cho tới đại lý dữ liệu (CSDL) bất kỳ nhỏng Sql Server, Oracle, MySql, SQLite...

Bạn đang xem: Ado là gì

quý khách đang xem: Avị là gì

2. Kiến trúc của ADO.NET

ADO.NET được tạo thành 2 yếu tố đó là Data Provider cùng Data Set như mẫu vẽ bên dưới đây

*

2.1. Data Provider

Gồm những thư viện cung cấp phương thức liên kết tới DataBase cùng làm việc cho tới dữ liệu. Mặc định .Net cung ứng sẵn mang lại chúng ta thư viện nhằm kết nối cho tới Sql Server -SqlClient (System.Data). Để thực hiện các loại cửa hàng dữ liệu không giống bạn cũng có thể cài đặt về từ bỏ Nuget.Một số từ khóa bạn có thể sử dụng nhằm tra cứu kiếm như: mysql provider (provider mang đến Mysql); sqlite provider (provider mang lại SqlLite); ...

2.2. Data Set

Gồm các thư viện nhằm làm chủ dữ liệu nlỗi DataTable (đại diện thay mặt cho các bảng gồm vào CSDL); DataColumn (đại diện cho những cột có trong bảng); DataRow (đại diện đến dữ liệu); khóa chính; Constraint (đại diện đến khóa nước ngoài của bảng); DataRelation (đại diện cho từng quan hệ thân các bảng)...

3. ADO.NET sử dụng để triển khai gì?

Mình sẽ khởi tạo ra classAdoNetCSharp để làm ví dụ xuyên suốt trong bài bác viêt cùng được điện thoại tư vấn trong hàm main như sau:

static void Main(string args) var adoNet = new AdoNetCSharp(); adoNet.Run(); Console.ReadKey(); Giả sử bản thân gồm cơ sở dữ liệu trên IP là "127.0.0.1"; thương hiệu CSDL là "ADONETEXAMPLE"; thông tin tài khoản kết nối là "testado" cùng mật khẩu là "testabởi.net". Trong DataBase bao gồm bảng "Users" có các ngôi trường cùng dữ liệu nlỗi hình mẫu vẽ dưới đây:

*

*

*

*

3.1. Chuỗi liên kết cơ sở dữ liệu

Chuỗi đựng biết tin kết nối tới các đại lý tài liệu như ảnh hưởng chứa cơ sở dữ liệu, thương hiệu DataBase, thông tin thông tin tài khoản liên kết cho tới DataBase...Cấu trúc của chuỗi liên kết CSDL như sau:

keyword1=value1; keyword2=value2;Trong đó keywork ko riêng biệt chữ hoa, chữ thường; value tùy ở trong vào quý hiếm mà sẽ có được sự phân biệt. Mình đang liệt kê một số những keywords thường dùng ở bảng tiếp sau đây.

Xem thêm: Sinh Năm 1990 Mệnh Gì? Tuổi Canh Ngọ Hợp Tuổi Nào, Màu Gì, Hướng Nào?

ví dụ như chuỗi liên kết nhỏng sau:

var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavày.net; Application Name=Test ADP.NET";Ngoài biện pháp tùy chỉnh thiết lập chuỗi kết nối nlỗi bên trên, chúng ta cũng có thể sinh sản chuỗi liên kết bằng cách áp dụng classSqlConnectionStringBuilder (System.Data.SqlClient)

var connectionStringBuilder = new SqlConnectionStringBuilder();connectionStringBuilder = "127.0.0.1";connectionStringBuilder = "ADONETEXAMPLE";connectionStringBuilder = "testado";connectionStringBuilder = "testabởi vì.net";connectionStringBuilder = "Test ADPhường.NET";var connectionString = connectionStringBuilder.ToString();3.2. Kết nốiĐể liên kết cho tới cơ sở dữ liệu, chúng ta dùng class SqlConnection nlỗi đoạn code dưới đây

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavày.net; Application Name=Test ADP.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); // TODO:... Bất đề cập bạn có nhu cầu làm gì bên trên CSDL, bạn cần tiến hành mở cửa trước. Sau khi dùng sau, bạn nên ghi nhớ Cthảm bại connection lại. Trong ví dụ trên, các bạn không thấy hàm Cthảm bại cơ mà khi chúng ta thực hiện using, .Net đang có tác dụng giúp cho bạn điều ấy.

3.3. Truy vấn CSDL

Để tróc nã vấn một bảng, chúng ta sử dụng đoạn code sau:

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testabởi vì.net; Application Name=Test ADPhường.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); using (var command = connection.CreateCommand()) comm&.CommandText = "Select * From Users"; var reader = commvà.ExecuteReader(); while (reader.Read()) var sUserId = reader.ToString(); var username = reader.ToString(); var password = reader.ToString(); var fullName = reader != null ? reader.ToString() : string.Empty; var sState = reader.ToString(); Console.WriteLine("0==1==2==3==4", sUserId, username, password, fullName, sState); Trong ví dụ bên trên, họ sử dụng câu lệnh sql là "Select * From Users" để thực hiện truy vấn dữ liệu. Đây là câu lệnh truy tìm vấn trực tiếp nối bảng Users. Chúng ta hoàn toàn có thể sử dụng view nhằm truy hỏi vấn bằng phương pháp núm câu lệnh sql thành "Select * From vwUsers".Ngoài bài toán thực hiện câu lệnh thuần sql (giá trị mang định là enum System.Data.CommandType.Text), bạn có thể sử dụng store procedure nhằm triển khai câu hỏi mang dữ liệu. Để tiến hành mang lên tiếng qua store procedure, họ gắng bằng đoạn code sau:

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavì chưng.net; Application Name=Test ADPhường.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); using (var comm& = connection.CreateCommand()) commvà.CommandType = CommandType.StoredProcedure; command.CommandText = "spGetAllUsers"; var reader = commvà.ExecuteReader(); while (reader.Read()) var sUserId = reader.ToString(); var username = reader.ToString(); var password = reader.ToString(); var fullName = reader != null ? reader.ToString() : string.Empty; var sState = reader.ToString(); Console.WriteLine("0==1==2==3==4", sUserId, username, password, fullName, sState); Bạn đề xuất thêm CommandType là StoreProcedure (kiểu dáng enum System.Data.CommandType) để khẳng định tiến hành bởi store. Tên store đã nằm trong ở trong tính CommandText.Kết quả của các đoạn code trên:
Trong ngôi trường vừa lòng, bọn họ mong kiếm tìm kiếm user bao gồm Username định dạng tương tự cùng với tmê mệt số truyền vào thì đoạn code nhỏng sau:

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavày.net; Application Name=Test ADP..NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); using (var command = connection.CreateCommand()) var likeUsername = "XXX"; commvà.CommandText = "Select * From Users Where Username Like "" + likeUsername + "%""; var reader = command.ExecuteReader(); while (reader.Read()) var sUserId = reader.ToString(); var username = reader.ToString(); var password = reader.ToString(); var fullName = reader != null ? reader.ToString() : string.Empty; var sState = reader.ToString(); Console.WriteLine("0==1==2==3==4", sUserId, username, password, fullName, sState); Kết quả cho nlỗi sau:
3.4. Insert/Update/DeleteVề cơ bản đoạn code để thực hiện 3 lệnh bên trên là giống như nhau, tôi chỉ đưa ra ví dụ tiến hành lệnh Insert, những chúng ta cũng có thể làm tương tự như với các lệnh Update cùng Delete.

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavì chưng.net; Application Name=Test ADPhường.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); using (var comm& = connection.CreateCommand()) var username = "XXX03"; var password = "Xxx03"; var fullName = "X3"; var state = "True"; command.CommandText = "Insert Inkhổng lồ Users (Username, Password, Fullname, State) " + "Values (N"" + username + "", N"" + password + "", N"" + fullName + "", "" + state + "")"; var affectedRow = commvà.ExecuteNonQuery(); Console.WriteLine(affectedRow); // Output: 1 Kết trái trong cơ sở dữ liệu sẽ có bạn dạng ghi new nlỗi sau:

4. Lưu ý

4.1. Kiểm tra dữ liệu khi đọc thông tin

Cùng xem lại đoạn code sau:

while (reader.Read())var sUserId = reader.ToString();var username = reader.ToString();var password = reader.ToString();var fullName = reader != null ? reader.ToString() : string.Empty;var sState = reader.ToString();Console.WriteLine("0==1==2==3==4", sUserId, username, password, fullName, sState);Trong cấu trúc bảng Users, ngôi trường UserId, Username, Password và State là gần như trường yêu cầu nhập nên việc kiểm soát dữ liệu lúc phát âm là không quan trọng (đã có chất vấn trước khi Insert); ngôi trường Fullname là ngôi trường chất nhận được NULL cần cần phải kiểm tra dữ liệu. Điều này nói lên rằng, bọn họ không được thừa sử dụng quá câu hỏi đánh giá dữ liệu (do các lần kiểm tra dữ liệu là một lần CPU hoạt động).

Xem thêm: 70 Ý Tưởng Hay Nhất Về Rei Thủy Thủ Sao Hoả, Thủy Thủ Sao Hỏa

4.2. Lưu ý khi sử dụngMultipleActiveResultSets4.3. Lưu ý Khi sử dụng pool

- Để thao tác làm việc với cơ sở dữ liệu, họ nên tiến hành Open - Cchiến bại connection. Nếu quy trình xuất hiện - Cthua thảm này xẩy ra liên tục đang ảnh hưởng cho tới hiệu năng của công tác. Để rời vấn đề Open - Cchiến bại liên tiếp điều này, .Net hỗ trợ tư tưởng là pool - chứa các connection. Việc chọn lọc connection làm sao sẽ tiến hành tiến hành khi khởi chế tạo ra SqlConnection.- .Net áp dụng connection string để phân minh các connection gồm vào pool. Chúng ta hãy xem ví dụ sau:

public class AdoNetCSharp public void Run() var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testavì.net; Application Name=Test ADP..NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); // TODO: Connection đầu tiên được chế tạo ra trên phía trên. connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado1; Password=testado1.net; Application Name=Test ADPhường.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); // TODO: Connection thứ hai được tạo ra trên phía trên. connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testabởi vì.net; Application Name=Test ADP.NET"; using (var connection = new SqlConnection(connectionString)) connection.Open(); // TODO: Tái sử dụng lại connection thứ nhất Vấn đề này có thể hiểu rằng, bây giờ vào pool bao gồm 2 connection được hóng sẵn.

4.4. Sử dụng tham mê số (Parameters) vào câu lệnh thao tác CSLD

- Đối với phần đa thao tác làm việc có truyền tmê man số, chúng ta đề xuất áp dụng Parameters nhằm tách việc bị tấn công Sql Injection. Các ví dụ phía bên trên (search kiếm user với Username bao gồm định dạng bất kỳ; thêm bắt đầu bạn dạng ghi vào bảng Users) bản thân viết dưới dạng câu lệnh thường xuyên nhưng lại trên thực tiễn thì không được phép viết như vậy.- Đối với tính năng tra cứu kiếm user với Username tất cả định hình bất kỳ yêu cầu thực hiện nlỗi đoạn code bên dưới đây:

public class AdoNetCSharp { public void Run() { var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testabởi.net; Application Name=Test ADPhường.NET"; using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = connection.CreateCommand()) { var likeUsername = "XXX"; comm&.CommandText = "Select * From Users Where Username Like