Cách dùng SqlConnection trong C# [ADO.NET]
Trong bài viết này chúng ta sẽ tìm hiểu về cách dùng SqlConnection trong C# [ADO.NET], đây là một class thuộc namespace System.Data.SqlClient.
Cụ thể chúng ta sẽ đi vào tìm hiểu ADO.NET SqlConnection là gì? cách khởi tạo và sử dụng đối tượng SqlConnection. Ngoài ra, làm thế nào để có thể lưu trữ và truy xuất chuỗi kết nối từ file config.
1. SqlConnection trong C# là gì?
ADO.NET SqlConnection class thuộc namespace System.Data.SqlClient và được sử dụng để kết nối mở đến cơ sở dữ liệu SQL Server. Điều quan trong nhất đó chính là kết nối sẽ không đóng hoàn toàn ngay cả khi bạn đã ra khỏi phạm vi hoạt động của nó. Vì vậy, bạn nên đóng chuỗi kết nối một cách rõ ràng bằng cách gọi phương thức Close()
của đối tượng kết nối.
*Lưu ý: Các kết nối nên được mở và đóng một cách chính xác nhất, nghĩa là mở khi cần thiết và đóng khi không cần thiết.
Bài viết này được đăng tại [free tuts .net]
Sau đây là Signature của class SqlConnection. Nó được kế thừa từ class DbConnection và thực hiện interface IConeable.
public sealed class SqlConnection : DbConnection, ICloneable { }
2. Cách khởi tạo và sử dụng đối tượng SqlConnection
Trong phần này mình sẽ hướng dẫn cách khởi tạo và sử dụng đối tượng SqlConnection trong ADO.NET, cũng như các hàm và phương thức của nó.
Để thực hiện được các thao tác với SqlConnection các bạn cần khởi tạo nó một cách đầy đủ nhất. Vì vậy hãy cùng mình tìm hiểu kỹ hơn nào.
Cách khởi tạo class SqlConnection
ADO.NET SqlConnection class có ba hàm tạo được hiển thị như dưới đây.
public SqlConnection(); public SqlConnection(String connectionString); public SqlConnection(String connectionString, SqlCredential credential);
Chúng ta sẽ đi cụ thể chi tiết từng chức năng của nó nhé.
- SqlConnection(): Nó khởi tạo mới một class System.Data.SqlClient.SqlConnection
- SqlConnection(String connectionString): Hàm khởi tạo này được sử dụng để khởi tạo một phiên bản mới của lớp System.Data.SqlClient.SqlConnection khi được cung cấp một chuỗi có chứa chuỗi kết nối.
- SqlConnection(String connectionString, SqlCredential credential): Nó được sử dụng để khởi tạo một phiên bản mới của lớp System.Data.SqlClient.SqlConnection cung cấp một chuỗi kết nối. Không sử dụng "Integrated Security = True" mà thay vào đó là đối tượng System.Data.SqlClient.SqlCredential chứa ID và Password của người dùng.
Các phương thức của class SqlConnection
Sau đây là một số phương thức quan trọng của SqlConnection.
- BeginTransaction: Nó được sử dụng để bắt đầu một transaction với cơ sở dữ liệu và trả về một đối tượng đại diện cho transaction mới.
- ChangeDatabase(string database): Nó được sử dụng để thay đổi cơ sở dữ liệu hiện tại cho một SqlConnection đang mở.
- ChangePassword(string connectionString, string newPassword): Thay đổi mật khẩu SQL Server cho người dùng được chỉ định trong chuỗi kết nối thành mật khẩu mới được cung cấp.
- Close(): Nó được sử dụng để đóng kết nối với cơ sở dữ liệu. Đây là phương pháp tối ưu nhất để đóng bất kỳ kết nối nào đang mở.
- CreateCommand(): Nó tạo và trả về một đối tượng System.Data.SqlClient.SqlCommand được liên kết với System.Data.SqlClient.SqlConnection.
- GetSchema(): Nó trả về thong tin lược đồ cho nguồn dữ liệu của System.Data.SqlClient.SqlConnection.
- Open(): Phương thức này được sử dụng để mở một kết nối cơ sở dữ liệu với cài đặt thuộc tính được chỉ định bởi System.Data.SqlClient.SqlConnection.ConnectionString.
Sử dụng class SqlConnection trong C#
Các bạn có thể tạo ra một instance của class SqlConnection theo ba hàm tạo trong class SqlConnection. Ở đây, mình sẽ hướng dẫn hai cách ưa thích nhất để tạo một instance của class SqlConnection.
Sử dụng hàm tạo lấy chuỗi kết nối làm tham số.
SqlConnection con = new SqlConnection("server=servername; database=databasename;integrated security=true")
Ở đây mình khởi tạo một instance mới con thuộc class SqlConnection với chuỗi kết nối, trong đó:
- servername: Là tên của server hoặc địa chỉ IP của máy mà bạn muốn kết nối đến, nếu server đó chính là máy của bạn thì có thể thay bằng "server=.".
- databasename: Là tên của database mà bạn chọn để kết nối trong server đã khai báo trước đó.
- integrated security = true: Ở đây sử dụng quyền truy cập của window để truy cập vào SQL Server.
Sử dụng hàm tạo không tham số của class SqlConnection.
SqlConnection con = new SqlConnection(); con.ConnectionString = "server=servername;database=databasename;integrated security=true";
Ở đây mình thực hiện qua hai bước. Đầu tiên, tạo một instance mới của class SqlConnection bằng cách sử dụng phương thức khởi tạo không tham số. Sau đó sử dụng thuộc tính ConnectionString của đối tượng kết nối mà bạn cần chỉ định chuỗi kết nối.
*Lưu ý: Tham số ConnectionString là một chuỗi được tạo thành từ các cặp Key/Value có thông tin cần thiết để tạo đối tượng kết nối.
Tạo chuỗi kết nối với quyền truy cập của windows:
string ConnectionString = "server=servername; database=databasename;integrated security=true";
Tạo chuỗi kết nối với quyền truy cập của SQL Server:
string ConnectionString = "server=servername; database=databasename;user id=username;password=userpassword";
3. Lưu trữ và truy xuất chuỗi kết nối từ file config
Ngoài cách khởi tạo chuỗi kết nối trực tiếp, ta có thể kết nối tới SQL Server thông qua file config. Việc sử dụng cách này sẽ rất thuận tiện cho việc thay đổi thông tin về chuỗi kết nối. Hiểu đơn giản, nếu bạn muốn thay đổi tên server thì chỉ cần mở file config và thay đổi là xong, không cần phải chỉnh sửa trong code nữa. Điều đó giúp hạn chế lỗi ngoài ý muốn khi chỉnh sửa.
Việc lưu trữ và truy xuất chuỗi kết nối từ file config được thực hiện theo các bước sau.
Bước 1: Tạo chuỗi kết nối ở file App.config.
Ở góc phải của màn hình chính của project trên visual studio có file App.config trong mục Solution Explorer. Các bạn hãy nhấn đúp chuột để mở file đó lên.
Bước 2: Thêm đoạn code tạo chuỗi kết nối vào file.
Bước 3: Thêm thư viện Configuration vào project.
Tại mục Solution Explorer, chuột phải vào References chọn Add Reference
Một cửa sổ mới hiện ra, kéo xuống và chọn vào System.Configuration sau đó nhấn OK
Bước 4: Thêm các thư viện cần thiết.
using System.Configuration; using System.Data.SqlClient;
Bước 5: Gọi chuỗi kết nối thông qua đối tượng ConfigurationManager.
//sử dụng lớp SqlConnection để tạo chuỗi kết nối SqlConnection con = new SqlConnection(); //gọi chuỗi kết nối ở file App.config bằng thuộc tính ConnectionString con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
Trong đó "conn" chính là tên của chuỗi kết nối mà mình đã đặt ở file App.config, các bạn có thể đặt tên này tuy ý sao cho dễ nhớ.
Như vậy là chúng ta đã tạo xong chuỗi kết nối, bây giờ chỉ cần mở chuỗi kết nối bằng phương thức Open()
để kết nối tới SQL Server.
4. Ví dụ về SqlConnection trong C#
Trong phần này mình sẽ thực hiện một ví dụ kết nối tới server trên chính máy mình, sau đó tạo mới một table ở database trên server của mình. Ví dụ này giúp các bạn hiểu được cách kết nối và thao tác với CSDL.
using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { class Program { static void Main(string[] args) { //gọi hàm CreateTable để tạo mới Table new Program().CreateTable(); Console.ReadKey(); } public void CreateTable() { //sử dụng lớp SqlConnection để tạo chuỗi kết nối SqlConnection con = new SqlConnection(); //gọi chuỗi kết nối ở file App.config bằng thuộc tính ConfigurationManager trong lớp System.Configuration con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; try { // viết câu lệnh query để thêm mới bảng với các thuộc tính name, email, join_date SqlCommand cm = new SqlCommand("create table student(id int not null, name varchar(100), email varchar(50), join_date date)", con); // mở chuỗi kết nối con.Open(); // sử dụng phương thức ExecuteNonQuery() để thực thi câu lệnh cm.ExecuteNonQuery(); // thông báo ra màn hình khi tạo thành công Console.WriteLine("Đã tạo mới bảng thành công"); } catch (Exception e) { Console.WriteLine("Có lỗi xảy ra !!!" + e); } // đóng chuỗi kết nối finally { con.Close(); } } } }
*Lưu ý: database Students các bạn tạo trước ở CSDL trên server đã nhé, phải có database thì mới kết nối tới được.
Kết quả:
Như vậy là chúng ta đã tìm hiểu xong về cách dùng SqlConnection trong C# ADO.NET, cũng như các chức năng và ví dụ sử dụng nó. Ở bài tiếp theo mình sẽ hướng dẫn các bạn một class tiếp theo đó chính là SqlConmmand, các bạn chú ý theo dõi nhé!!!