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.
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.
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ả:
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ả:
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é !!!