Chuyển đến nội dung chính

Sử dụng ADO.NET để thực thi Stored Procedure

Giới thiệu

ADO.NET (ActiveX Data Objects for .NET) là một tập hợp các công nghệ trong Microsoft .NET Framework được thiết kế để làm việc với dữ liệu trong môi trường .NET. ADO.NET cung cấp một mô hình lập trình cho truy cập và quản lý dữ liệu từ nhiều nguồn khác nhau, chẳng hạn như cơ sở dữ liệu SQL Server, Oracle, MySQL, và các nguồn dữ liệu khác.

ADO.NET chủ yếu được sử dụng để thực hiện các thao tác thường xuyên liên quan đến cơ sở dữ liệu, bao gồm:

  • Kết nối (Connection): ADO.NET cung cấp lớp SqlConnection để thiết lập kết nối với cơ sở dữ liệu. Kết nối là cầu nối giữa ứng dụng và cơ sở dữ liệu.
  • Command: ADO.NET sử dụng các lớp SqlCommand, SqlDataAdapter, và SqlDataReader để thực hiện các câu truy vấn SQL, stored procedures, và thao tác khác đối với cơ sở dữ liệu.
  • DataReader: SqlDataReader là một cơ chế để đọc dữ liệu từ cơ sở dữ liệu một cách tuần tự và hiệu quả, thích hợp cho việc đọc dữ liệu theo hàng.
  • DataAdapter: SqlDataAdapter là một thành phần quan trọng trong ADO.NET, giúp điều khiển luồng dữ liệu giữa DataSet và cơ sở dữ liệu.
  • DataSet và DataTable: DataSet là một cấu trúc dữ liệu chứa các đối tượng DataTable và cung cấp khả năng lưu trữ dữ liệu trong bộ nhớ. DataTable thì đại diện cho một bảng dữ liệu.

Stored Procedure là gì

Stored Procedure (thường được viết tắt là SP) là một khối mã SQL có thể được lưu trữ và tái sử dụng trong cơ sở dữ liệu. Stored Procedure thường được tạo và lưu trữ trước trong hệ thống quản lý cơ sở dữ liệu, và sau đó có thể được gọi và thực thi từ ứng dụng hoặc các truy vấn SQL khác.

Ví dụ

CREATE PROCEDURE GetEmployeeByName
    @EmployeeName NVARCHAR(50)
AS
BEGIN
    SELECT * FROM Employees
    WHERE EmployeeName = @EmployeeName;
END;
Thực thi Stored Procedure trong Azure Data Studio:
EXEC GetEmployeeByName @EmployeeName = N'Robert Downey Jr.'

Thực thi Stored Procedure

Để sử dụng ADO.NET để gọi và lấy dữ liệu từ một Stored Procedure trong C#, bạn cần sử dụng các đối tượng như SqlConnection, SqlCommand, và SqlDataReader

 

Connection string là một chuỗi kết nối chứa thông tin cần thiết để kết nối ứng dụng của bạn với cơ sở dữ liệu. Bao gồm

  • Data Source (hoặc Server, Address, Addr, Network Address)
  • Initial Catalog (hoặc Database)
  • Integrated Security (hoặc Trusted_Connection): Xác định cách xác thực. Nếu giá trị là true, connection sẽ sử dụng xác thực Windows (được gọi là xác thực tích hợp). Nếu giá trị là false, connection sẽ sử dụng xác thực SQL Server.
  • User ID và Password: Khi sử dụng xác thực SQL Server, bạn cần cung cấp tên người dùng (User ID) và mật khẩu (Password) để kết nối.
  • MultipleActiveResultSets: Cho phép một kết nối mở nhiều bảng kết quả (result sets) đồng thời. Giá trị mặc định là false.
  • Connect Timeout: Xác định thời gian chờ (số giây) trước khi quá trình kết nối bị hủy bỏ.
  • Encrypt (hoặc TrustServerCertificate): Xác định liệu kết nối có sử dụng SSL/TLS để mã hóa dữ liệu hay không.
  • Application Name: Xác định tên của ứng dụng khi nó kết nối đến cơ sở dữ liệu.
Ví dụ:
SqlConnection conn = new SqlConnection(
"Data Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword;MultipleActiveResultSets=true;Connect Timeout=60;Encrypt=true;Application Name=nhatkyhoctap;");

SqlDataReader

Nhiều thao tác dữ liệu đòi hỏi bạn chỉ lấy một luồng dữ liệu để đọc. Đối tượng data reader cho phép bạn lấy được kết quả của một câu lệnh SELECT từ một đối tượng command. Để tăng hiệu suất, dữ liệu trả về từ một data reader là một luồng dữ liệu fast forward-only. Có nghĩa là bạn chỉ có thể lấy dữ liệu từ luồng theo một thứ tự nhất định. Mặc dù điều này có lợi về mặt tốc độ, nhưng nếu bạn cần phải thao tác dữ liệu, thì một DataSet sẽ là một đối tượng tốt hơn để làm việc.

DataSet

Đối tượng DataSet là một thể hiện của dữ liệu trong bộ nhớ. Chúng chứa nhiều đối tượng DataTable, bên trong DataTable lại có nhiều column và row, giống như các database table thông thường. Bạn thậm chí có thể định nghĩa dữ liệu giữa các table để tạo các quan hệ parent-child. DataSet được thiết kế đặc biệt để giúp quản lý dữ liệu trong bộ nhớ và để hỗ trợ các thao tác không cần kết nối (disconnected) trên dữ liệu. DataSet là một đối tượng được dùng bởi tất cả Data Provider, đó là lý do tại sao nó không có một Data Provider prefix trong tên gọi.

Tạo Project sử dụng ADO.NET

Tạo project Console Application sử dụng .NET 8. Sau đó cài đặt package

Microsoft.Data.SqlClient

Thực thi đoạn code sau

string connectionString = "Server=.;Initial Catalog=nhatkyhoctap;Persist Security Info=False;User ID=sa;Password=1111111;MultipleActiveResultSets=true;Connection Timeout=60;Encrypt=False;"; 
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (SqlCommand command = new SqlCommand("sp_SPName", connection))
    {
        command.CommandType = System.Data.CommandType.StoredProcedure;

        // Thêm các tham số cho stored procedure (nếu có)
        command.Parameters.AddWithValue("@name", "Geogre Washington");

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                var resultColumn1 = reader[0].ToString();
                var resultColumn2 = reader[1].ToString();

                Console.WriteLine($"{resultColumn1}, {resultColumn2}");
            }
        }
    }
}

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.