Kết nối C# với SQL Server

Khi lập trình C# kết nối với SQL Server các lỗi thường phát sinh, nguyên nhân và cách khắc phục

Kết nối C# với SQL Server

  1. Cách sử dụng C# để mở kết nối đến SQL Server
  2. Một số dạng chuổi câu kết nối C# đến SQL Server
  3. Các biến đối tượng để kết nối lệnh C# đến SQL để lấy dữ liệu
  4. Khi lập trình C# kết nối với SQL Server các lỗi thường phát sinh

1. Cách sử dụng C# để mở kết nối đến SQL Server 

Đối tượng sử dụng để kết nối SQL Server

            SqlConnection sqlCon = new SqlConnection();
            string cns = @"Data Source=hongnhat2\SQLEXPRESS;Initial Catalog=test;User ID=sa;Password=123";
            sqlCon.ConnectionString = cns;
            sqlCon.Open();
            Console.Write(sqlCon.State);
 

Ví dụ kết nối SQL Server đầy đủ có sử dụng try catch

 
    SqlConnection sqlCon = new SqlConnection();
    try
    {
        string cns = @"Data Source=hongnhat2\SQLEXPRESS;Initial Catalog=QLNS;User ID=sa;Password=123";
        sqlCon.ConnectionString = cns ;             
        sqlCon.Open(); // mở kết nối dữ liệu
        Console.Write(  sqlCon.State );
        if( sqlCon.State==ConnectionState.Open)
        {
            //Làm cái gì đó !
        }   
    }
    catch(Exception exx)
    {
       Console.Write(exx.Message);
    }
    finally
    {
        sqlCon.Close();
    }

Câu hỏi: Tại sao lại sử dụng Try CatchsqlCon.Close

Video thực hành kết nối C# với SQL Server

2. Một số dạng chuổi câu kết nối C# đến SQL Server

Câu Connection String để kết nối SQL Server

🔹 Kết nối SQL Server bằng Windows Authentication

Server=Server_name_IP; Database=Tên_DB; Trusted_Connection=True;

Data Source=Server_name_IP; Initial Catalog=Tên_DB; Integrated Security=True;

🔹 Kết nối SQL Server bằng SQL Server Authentication (user/password)

Server=Server_name_IP; Database=Tên_DB; User Id=tên_user; Password=mật_khẩu;

Data Source=Server_name_IP;Initial Catalog=Tên_DB;User ID=tên_user;Password=mật_khẩu

🔹 Nên sử dụng Connection String là Server hay DataSource
Thành phần Gốc từ Dùng nhiều trong...
Server= ODBC Ngắn gọn, dễ nhớ, phổ biến
Data Source= ADO.NET Thường dùng trong C#, VB

Dùng Server= cho ngắn gọn, dễ nhớ, nhưng sau này chuyển qua ADO.NET phải đổi code.
Dùng Data Source= nếu bạn làm việc với ADO.NET và thích dùng tên chuẩn theo tài liệu của .NET.
Theo kinh nghiệm của mình thì bạn nên dùng Data Source.

 

Cú pháp chung:
Data Source=tên_máy_chủ;Initial Catalog=Ten_DB;Integrated Security=true
Data Source=tên_máy_chủ;Initial Catalog=Ten_DB;User Id=User;Password=Pass;

Ví dụ:
  string strCn_Kieu_01 = @"Data Source=.\SQLEXPRESS;Initial Catalog=TenDB;Integrated Security=true";   string strCn_Kieu_02 = @"Data Source=TenCSDL\SQLEXPRESS;Initial Catalog=TenDB;Integrated Security=true";
 string strCn_Kieu_03 = @"Data Source=TenCSDL\SQLEXPRESS;Initial Catalog=TenDB;User Id=sa;Password=123;";

Video thực hành câu connection string kết nối

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

3. Các biến đối tượng để kết nối lệnh C# đến SQL để lấy dữ liệu

Sử dụng SqlCommand

      

  var strConnectString = @"Data Source=hongnhat2\SQLEXPRESS;
  Initial Catalog=QLNS;
   User ID=sa;Password=123";
SqlConnection con = new SqlConnection(strConnectString);           
con.Open();
SqlCommand command = new SqlCommand();
command.CommandText = "Select * From tbNhanVien";
command.Connection = con;
SqlDataReader readDB_SQL=  command.ExecuteReader();
DataTable dt = new DataTable();
if (readDB_SQL.HasRows)
    dt.Load(readDB_SQL);

 

Sử dụng SqlDataAdapter

 

   string strConnectString = @"Data Source=hongnhat\SQLEXPRESS;Initial Catalog=PhanMemBanHang;Integrated Security=true";
   string strCmdSQL = "select * from tbKhachHang";

   SqlConnection con = new SqlConnection(strConnectString);            
   SqlCommand cmd = new SqlCommand(strCmdSQL, con);
   con.Open();

   SqlDataAdapter adpt = new SqlDataAdapter(cmd);
   DataTable table = new DataTable();
   adpt.Fill(table);

   Dữ liệu được trả về biến table, nếu dùng winform bạn tạo 1 dataGridView1 để xem dữ liệu

   dataGridView1.DataSource = table;

 

Qua 2 ví dụ trên ta thấy có các đối tượng cần quan tâm khi kết nối C# đến SQL Server.

   Các biến đối tượng chính cần sử dụng để kết nối C# đến SQL

SqlConnection con = new SqlConnection("chuổi kết nối");     
Ta có thể kiểm tra tình trạng kết nối trước khi lấy dữ liệu
if (connection.State != ConnectionState.Open)
       return ;
 

 Biến SqlConnection làm nhiều vụ kết nối C# đến SQL Server nó được coi như 1 sợi dây kết nối.

SqlCommand cmd = new SqlCommand(strCmdSQL, con);

Biến SqlCommand nhiệm vụ thông dịch viên, gởi câu lệnh Select, insert, update, delete... từ C# đến SQL Server

   SqlDataAdapter adpt = new SqlDataAdapter(cmd);

Biến SqlDataAdapter nhiệm vụ làm thông dịch viên, chuyển kết quả từ nhiệm vụ của biến SqlCommand thành kết quả C# cần như trả về 1 table

4. Khi lập trình C# kết nối với SQL Server các lỗi thường phát sinh

Lỗi 1: String or binary data would be truncated SQL Server
Nguyên nhân: của lỗi String or binary data would be truncated là do khai báo biến

 Độ rộng của SqlParameter lớn hơn độ rộng của cột SQL Server

Lỗi 2: instance failure' error while connection string is correct
 Nguyên nhân: do câu Connect String bị sai cú pháp

            string strConnectString = @"Data Source=hongnhat\\SQLEXPRESS;Initial Catalog=PhanMemBanHang;Integrated Security=true";

            string strConnectString = @"Data Source=hongnhat\SQLEXPRESS;Initial Catalog=PhanMemBanHang;Integrated Security=true";

Bạn xem 2 câu ConnectString có khác nhau không, câu màu xanh sẽ chạy được, câu màu đỏ sẽ lỗi.

Tìm kiếm:

Khi lập trình C# kết nối với SQL Server các lỗi thường phát sinh, nguyên nhân và cách khắc phục