Trong bài viết này mình sẽ hướng dẫn cách thao tác với SQL Server bằng DataSet trong C# ADO.NET. Cụ thể mình sẽ thực hiện kết nối với database của SQL Server, sau đó lấy dữ liệu và hiển thị ra màn hình.

Trước khi đi vào viết code C#, chúng ta cần tạo database trong SQL Server để có thể kết nối tới. Các bạn có thể sử dụng đoạn code sau để tạo database và dữ liệu trong database.

CREATE DATABASE ShoppingCartDB;
GO

USE ShoppingCartDB;
GO

CREATE TABLE Customers(
 ID INT PRIMARY KEY,
 Name VARCHAR(100),
 Mobile VARCHAR(50)
)
GO

INSERT INTO Customers VALUES (101, 'Quyen', '118001229')
INSERT INTO Customers VALUES (102, 'Freetuts', '123456789')
INSERT INTO Customers VALUES (103, 'Cuong', '987654321')
GO

CREATE TABLE Orders(
 ID INT PRIMARY KEY,
 CustomerId INT,
 Amount INT
)
GO

INSERT INTO Orders VALUES (10011, 103, 20000)
INSERT INTO Orders VALUES (10012, 101, 30000)
INSERT INTO Orders VALUES (10013, 102, 25000)
GO

Sau khi chạy đoạn code trên, ta được một database shoppingCartDb như sau.

bai10 01 png

1. Hiển thị dữ liệu từ SQL Server bằng DataSet trong C#

Trong ví dụ này mình sẽ sử dụng DataSet để hiển thị dữ liệu từ database vừa mới được tạo ở trên, cụ thể như sau:

Bài viết này được đăng tại [free tuts .net]

Ta cần thêm các namespace cần thiết để sử dụng như Configuration, Data, Data.SqlClient,…

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

Khởi tạo mới một instance của class SqlDataAdapter với câu lệnh T-SQL lấy dữ liệu từ bảng Customers.

SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from Customers", con);

Khởi tạo instance của class DataSet và sử dụng phương thức Fill() để điền dữ liệu từ DataSet vào dataAdapter.

DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

Cuối cùng ta sử dụng vòng lặp for dựa trên chỉ số index của table và in các hàng dữ liệu trong bảng ra màn hình console.

foreach (DataRow row in dataSet.Tables[0].Rows)
{
     Console.WriteLine(row["Id"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
}

Full code:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
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 Retrieve để truy xuất dữ liệu
            new Program().Retrieve();
            Console.ReadKey();
        }
        public void Retrieve()
        {
            //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;
            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from customers", con);
                //khởi tạo một instance dataset
                DataSet dataSet = new DataSet();
                //sử dụng phương thức Fill() để điền dữ liệu vào
                dataAdapter.Fill(dataSet);
                //dụng vòng lặp for để hiển thị tất cả các hàng dữ liệu ra màn hình console
                foreach (DataRow row in dataSet.Tables[0].Rows)
                {
                    Console.WriteLine(row["Id"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Co loi xay ra !!!" + e);
            }
            // dóng chuỗi kết nối
            finally
            {
                con.Close();
            }
        }
    }
}

Kết quả:

Xem Thêm:   Cách vệ sinh bàn ủi khi bị cháy, rỉ sét, bụi bẩn

bai10 02 png

2. Hiển thị nhiều bảng dữ liệu từ SQL Server bằng DataSet trong C#

Việc hiển thị nhiều bảng dữ liệu cũng tương tự như hiển thị một bảng, ta chỉ cần sử dụng thêm một vòng lặp foreach cho bảng đó là có thể hiển thị được rồi.

Ở ví dụ này mình sẽ hiển thị nhiều bảng bằng cách khai báo một tên riêng cho bảng bằng thuộc tính TableName, sau đó sử dụng nó để hiển thị dữ liệu.

dataSet.Tables[0].TableName = "Customers";
dataSet.Tables[1].TableName = "Orders";

Khi đó vòng lặp foreach của chúng ta sẽ có dạng như sau:

foreach (DataRow row in dataSet.Tables["Customers"].Rows)
{
     Console.WriteLine(row["Id"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
}
foreach (DataRow row in dataSet.Tables["Orders"].Rows)
{
     Console.WriteLine(row["Id"] + ",  " + row["CustomerId"] + ",  " + row["Amount"]);
}

Full code:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
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 Retrieve để truy xuất dữ liệu
            new Program().Retrieve();
            Console.ReadKey();
        }
        public void Retrieve()
        {
            //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;
            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from Customers; select * from Orders", con);
                //khởi tạo một instance dataset
                DataSet dataSet = new DataSet();
                //sử dụng phương thức Fill() để điền dữ liệu vào
                dataAdapter.Fill(dataSet);
                //đặt tên cho bảng dựa trên vị trí index
                dataSet.Tables[0].TableName = "Customers";
                dataSet.Tables[1].TableName = "Orders";

                //dụng vòng lặp for để hiển thị tất cả các hàng dữ liệu ra màn hình console
                //bảng Customer
                Console.WriteLine("-----Du lieu bang Customers-----");
                foreach (DataRow row in dataSet.Tables["Customers"].Rows)
                {
                    Console.WriteLine(row["Id"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
                }
                //bảng Orders
                Console.WriteLine("n-----Du lieu bang Orders-----");
                foreach (DataRow row in dataSet.Tables["Orders"].Rows)
                {
                    Console.WriteLine(row["Id"] + ",  " + row["CustomerId"] + ",  " + row["Amount"]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Co loi xay ra !!!" + e);
            }
            // dóng chuỗi kết nối
            finally
            {
                con.Close();
            }
        }
    }
}

Kết quả:

Xem Thêm:   Java - Viết chương trình in ra các số chẵn nhỏ hơn hoặc bằng 20.

bai10 03 png

Như vậy là chúng ta đã tìm hiểu xong về cách sử dụng DataSet trong C# để hiển thị dữ liệu từ SQL Server. Ở bài tiếp theo mình sẽ hướng dẫn cách thao tác với SQL Server bằng Stored Procedure (thủ tục), các bạn chú ý theo dõi nhé !!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *