13/11/2013

Bài 03: Đối tượng lệnh SqlCommand

    Đối tượng SqlCommand cho phép bạn chỉ định các loại tương tác mà bạn muốn thực hiện với một cơ sở dữ liệu. Ví dụ, bạn có thể dùng các câu lệnh chọn, thêm, chỉnh sửa và xoá trên một dòng dữ liệu trong một bảng dữ liệu.
    Bài học này mô tả đối tượng SqlCommand và cách tương tác với một cơ sở dữ liệu.
    Mục tiêu bài học:
    - Hiểu về đối tượng command là gì?
    - Học cách sử dụng phương thức ExecuteReader để truy vấn dữ liệu
    - Học cách sử dụng phương thức ExecuteNonQuery để thêm mới và xoá dữ liệu
    - Học cách sử dụng phương thức ExecuteScalar để trả về một dữ liệu duy nhất
    • Giới thiệu

      Đối tượng SqlCommand cho phép bạn chỉ định các loại tương tác mà bạn muốn thực hiện với một cơ sở dữ liệu. Ví dụ, bạn có thể dùng các câu lệnh chọn, thêm, chỉnh sửa và xoá trên một dòng dữ liệu trong một bảng dữ liệu. Đối tượng SqlCommand có thể được sử dụng để hỗ trợ việc quản lý dữ liệu bị ngắt kết nối, nhưng khía cạnh bài học thì tôi chỉ giới thiệu duy nhất đối tượng SqlCommand. Để thuận tiện cho việc tìm hiểu hơn về vấn đề trên, các bạn hãy xem tiếp các bài học tiếp theo nói về SqlDataAdapter. 
    • Dưới đây, tôi sẽ demo toàn bộ những vấn đề liên quan đến đối tượng SqlCommand này cùng với các hành động như : Lọc, Thêm, Sửa, Xoá dữ liệu trong cơ sở dữ liệu. Bài học này sẽ sử dụng đối tượng SqlConnection để tạo việc kết nối với cơ sở dữ liệu.

      Truy vấn dữ liệu

      Khi sử dụng câu lệnh SQL, bạn muốn lấy tập một dữ liệu để hiển thị. Để hoàn thành câu lệnh với đối tượng SqlCommand, bạn sẽ sử dụng phương thức ExecuteReader, nó sẽ trả về một đối tượng SqlDataReader.
      Đối tượng SqlConnection
      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      Đối tượng SqlCommand
      SqlCommand sqlCommand = new SqlCommand("SELECT * FROM Example", sqlConn);
      Đối tượng SqlDataReader
      SqlDataReader dr = sqlCommand.ExecuteReader();
      Đến đây thì việc hiển thị dữ liệu khá dễ dàng với vòng lặp While
      while (dr.Read())
                  {
                      Console.WriteLine(dr[0]);
                  }

      Chèn dữ liệu

      Để thêm mới (chèn) dữ liệu vào cơ sở dữ liệu, bạn phải sử dụng phương thức ExecuteNonQuery của đối tượng SqlCommand. Các mã lệnh bên dưới sẽ nói rõ hơn về cách chèn dữ liệu vào một bảng.
      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      Cú pháp để chèn dữ liệu vào một bảng
      SqlCommand sqlCommand = new SqlCommand("Insert into Example values('ASP.NET MVC','Tác giả Trương Minh Tuấn');", sqlConn);
      sqlCommand.ExecuteNonQuery();
      Ngoài ra, bạn có thể viết bằng cách khác, bằng cách đưa câu lệnh Insert gán cho một chuỗi, cụ thể như sau:
      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      string query = @"Insert into Example values('ASP.NET MVC','Tác giả Trương Minh Tuấn');";
      SqlCommand sqlCommand = new SqlCommand(query, sqlConn);
      sqlCommand.ExecuteNonQuery();

      Cập nhật dữ liệu

      Như ví dụ trên, các bạn đã thực hiện được thao tác Thêm mới dữ liệu thì việc Cập nhật lại dữ liệu chỉ cần sử dụng cú pháp SQL để thực hiện, mã lệnh sau đây nói về vấn đề này:
      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      SqlCommand sqlCommand = new SqlCommand("Update Example SET Tenquyensach='ASP.NET MVC3 Step by Step' where SachId=3;", sqlConn);
      sqlCommand.ExecuteNonQuery();

      Xoá dữ liệu

      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      SqlCommand sqlCommand = new SqlCommand("Delete Example where SachId=3;", sqlConn);
      sqlCommand.ExecuteNonQuery();

      Lấy giá trị duy nhất

      Đôi khi tất cả những gì bạn cần từ một cơ sở dữ liệu là một giá trị duy nhất, mà có thể là một số, tổng hợp, trung bình, hoặc giá trị tổng hợp khác từ một tập hợp dữ liệu. Thực hiện một ExecuteReader và tính toán kết quả trong mã của bạn không phải là cách hiệu quả nhất để làm điều này. Sự lựa chọn tốt nhất là để cho các cơ sở dữ liệu thực hiện công việc và trả lại chỉ là giá trị duy nhất bạn cần. Ví dụ sau đây cho thấy làm thế nào để làm điều này với phương thức ExecuteScalar
      SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
      SqlCommand sqlCommand = new SqlCommand("Select count(*) from Example", sqlConn);
      int Dem = (int)sqlCommand.ExecuteScalar();
      Dưới đây, tôi củng cố lại kiến thức bằng cách viết ra toàn bộ mã nguồn có liên quan đến những hành động ở trên;
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Collections;
      using System.Data.SqlClient;
      namespace ADONETDatabase
      {
          class Connection
          {
              public SqlConnection ConnectionString = new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
          }
      }
      namespace ADO.NET
      {
          class Program
          {
              static void Main(string[] args)
              {
              }
              public void ReadData()
              {
                   SqlConnection sqlConn=new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
                      SqlCommand sqlCommand = new SqlCommand("SELECT * FROM Example", sqlConn);
                      SqlDataReader dr = sqlCommand.ExecuteReader();
                      while (dr.Read())
                      {
                          Console.WriteLine(dr[0]);
                      }
              }
              public void InsertData()
              {
                  SqlConnection sqlConn = new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
                  SqlCommand sqlCommand = new SqlCommand("Insert into Example values('ASP.NET MVC','Tác giả Trương Minh Tuấn');", sqlConn);
                  sqlCommand.ExecuteNonQuery();
              }
              public void UpdateData()
              {
                  SqlConnection sqlConn = new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
                  SqlCommand sqlCommand = new SqlCommand("Update Example SET Tenquyensach='ASP.NET MVC3 Step by Step' where SachId=3;", sqlConn);
                  sqlCommand.ExecuteNonQuery();
              }
              public void DeleteData()
              {
                  SqlConnection sqlConn = new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
                  SqlCommand sqlCommand = new SqlCommand("Delete Example where SachId=3;", sqlConn);
                  sqlCommand.ExecuteNonQuery();
              }
              public int NumberData()
              {
                  SqlConnection sqlConn = new SqlConnection("Data Source=ifsoft;user id=sa;pwd=123;database=ADO.NET");
                  SqlCommand sqlCommand = new SqlCommand("SELECT count(*) FROM Example", sqlConn);
                  return (int)sqlCommand.ExecuteScalar();
              }
          }
      }
      Chúc các bạn học tốt
      Tham khảo http://truongminhtuan.info/Lesson/details?LessonId=15

    No comments:

    Post a Comment