ADO.NET
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thao tác với SQL Server bằng DataSet trong C# [ADO.NET]

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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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ả:

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ả:

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é !!!

Cùng chuyên mục:

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Top