Kết nối và truy vấn dữ liệu database ở sql server từ C#

Các bước xử lý

I>Mở kết nối. Để mở kết nối cần các thứ và bước sau:

  1. Chuẩn bị một chuỗi kết nối connection string (là đường dẫn đến database, thông tin username password để vào database)
  2. Đối tượng hỗ trợ kết nối đến database (SqlConnection)
  3. Sử dụng SqlConnection để mở kết nối bằng SqlConnection.Open
  4. Xử lý các ngoại lệ nếu có lỗi trong quá trình mở kết nối
  5. Đóng kết nối sau khi sử dụng
  6. Code minh họa
            //xac dinh duong dan den database va thay **** bang mat khau
            String connString = @"Server=DESKTOP-52N97T0\SQLEXPRESS;Database=todo;User Id=sa;Password=******;";
            //ket noi csdl bang Sqlconnection
            SqlConnection connection = new SqlConnection(connString);

            try
            {
                //Mo ket noi
                connection.Open();


            }
            catch (InvalidOperationException ex)
            {
                //xu ly khi ket noi co van de
                MessageBox.Show("Khong the mo ket noi hoac ket noi da mo truoc do");
            }
            catch (Exception ex)
            {
                //xu ly khi ket noi co van de
                MessageBox.Show("Ket noi xay ra loi hoac doc du lieu bi loi");
            }
            finally
            {
                //Dong ket noi sau khi thao tac ket thuc
                connection.Close();
            }

II>Truy vấn. Để thực hiện các thao tác truy vấn đến dữ liệu thì cần thực hiện các bước sau:

  1. Chuẩn bị một chuỗi query viết bằng ngôn ngữ SQL
  2. Chuẩn bị một đối tượng SqlCommand, đối tượng này sẽ chứa câu query chuẩn bị ở bước 1, và kết nối đến SqlConnect đã tạo kết nối đến database.
  3. Sử dụng SqlCommand để thực hiện câu truy vấn (sử dụng SqlCommand.ExcuteReader nếu là thao tác select, SqlCommand.ExcuteNonQuery nếu là các thao tác thêm, sửa, xóa).
  4. Xử lý kết quả (Đối với thêm, sửa, xóa kết quả nhận về là số dòng bị ảnh hưởng bởi câu query (khi thêm sẽ trả về số dòng được thành công, khi sửa sẽ trả về số dòng bị sửa, xóa sẽ trả về số dòng bị xóa , còn đối với select thì kết quả sẽ là một đối tượng SqlDataReader sẽ hỗ trợ ta đọc các dòng dữ liệu hợp lệ trong câu select mà ta chuẩn bị bước 1 – và tiếp tục làm bước 5,6,7)
  5. Chỉ áp dụng cho trường hợp Select: Kiểm tra có còn dòng nào chưa đọc từ kết quả khi thực hiện truy vấn hay không bằng SqlDataReader.HasRows (true là còn dòng chưa đọc, false là đã hết dữ liệu)
  6. Đọc một dòng dữ liệu bằng SqlDataReader.Read() (trả về true nếu đọc ok, false nếu đọc có vấn đề hoặc hết dòng để đọc).
  7. Lấy các cột dữ liệu mong muốn từ SqlDataReader nếu bước Read thành công. Muốn lấy dữ liệu cột i (chạy từ 0) của  dòng hiện tại đang đọc thì sử dụng các lệnh: SqlDataReader.GetString(i), SqlDataReader.GetInt32(i), SqlDataReader.GetBoolean(i),….
  8. Chuyển qua bước đóng kết nối

Ví dụ:

                //Chuan bi cau lenh query viet bang SQL
                String sqlQuery = "select * from users";
                //Tao mot Sqlcommand de thuc hien cau lenh truy van da chuan bi voi ket noi hien tai
                SqlCommand command = new SqlCommand(sqlQuery, connection);
                //Thuc hien cau truy van va nhan ve mot doi tuong reader ho tro do du lieu
                SqlDataReader reader = command.ExecuteReader();
                //Su dung reader de doc tung dong du lieu
                //va thuc hien thao tac xu ly mong muon voi du lieu doc len
                while (reader.HasRows)//con dong du lieu thi doc tiep
                {
                    if (reader.Read() == false) return;//doc ko duoc thi return
                    //xu ly khi da doc du lieu len
                    dataGridView1.Rows.Add(reader.GetString(0),reader.GetBoolean(1),
                                            reader.GetInt32(2),reader.GetInt32(3),
                                            reader.GetInt32(4),reader.GetInt32(5));

                }

Toàn bộ code khi ghép bước mở kết nối và xử lý:

            //xac dinh duong dan den database
            String connString = @"Server=DESKTOP-52N97T0\SQLEXPRESS;Database=todo;User Id=sa;Password=******;";
            //ket noi csdl bang Sqlconnection
            SqlConnection connection = new SqlConnection(connString);

            try
            {
                //Mo ket noi
                connection.Open();
                //Chuan bi cau lenh query viet bang SQL
                String sqlQuery = "select * from users";
                //Tao mot Sqlcommand de thuc hien cau lenh truy van da chuan bi voi ket noi hien tai
                SqlCommand command = new SqlCommand(sqlQuery, connection);
                //Thuc hien cau truy van va nhan ve mot doi tuong reader ho tro do du lieu
                SqlDataReader reader = command.ExecuteReader();
                //Su dung reader de doc tung dong du lieu
                //va thuc hien thao tac xu ly mong muon voi du lieu doc len
                while (reader.HasRows)//con dong du lieu thi doc tiep
                {
                    if (reader.Read() == false) return;//doc ko duoc thi return
                    //xu ly khi da doc du lieu len
                    dataGridView1.Rows.Add(reader.GetString(0),reader.GetBoolean(1),
                                            reader.GetInt32(2),reader.GetInt32(3),
                                            reader.GetInt32(4),reader.GetInt32(5));

                }


            }
            catch (InvalidOperationException ex)
            {
                //xu ly khi ket noi co van de
                MessageBox.Show("Khong the mo ket noi hoac ket noi da mo truoc do");
            }
            catch (Exception ex)
            {
                //xu ly khi ket noi co van de
                MessageBox.Show("Ket noi xay ra loi hoac doc du lieu bi loi");
            }
            finally
            {
                //Dong ket noi sau khi thao tac ket thuc
                connection.Close();
            }