Nội Dung Tổng quan về ADO.NET Sử dụng các Database Connection Sử dụng Command Truy cập cơ sở dữ liệu với Data Reader Sử dụng DataSet Hiển thị dữ liệu sử dụng DataGridView Sử
Trang 1Phần 3: Lập trình CSDL bằng WinForm
Trang 2Nội Dung
Tổng quan về ADO.NET
Sử dụng các Database Connection
Sử dụng Command
Truy cập cơ sở dữ liệu với Data Reader
Sử dụng DataSet
Hiển thị dữ liệu sử dụng DataGridView
Sử dụng Store Procedure
Cập nhật dữ liệu
Trang 3 ADO (ActiveX Data Objects) là một thư
viện của các thành phần COM, bao gồm các
thành phần:
Connection, Command, Recordset, và Field.
ADO.NET chứa 2 không gian tên cơ sơ dữ
liệu:
Một cho SQL Server.
Một cho các cơ sở dữ liệu được trình bày thông
qua một giao diện OLE DB.
Trang 4ADO.NET (tt)
Namespace
System.Data
○ Các lớp truy xuất dữ liệu chung
System.Data.OleDb
○ Các lớp của OLE DB provider
System.Data.SqlClient
○ Các lớp của SQL Server provider
Trang 5ADO.NET (tt)
Các lớp dùng chung
DataSet
○ Chứa các DataTable, quan hệ giữa các bảng, và được
thiết kế cho truy xuất dữ liệu không kết nối.
DataTable
○ Gồm các thuộc tính dữ liệu DataColumn và DataRows.
DataRow
○ Một dòng trong bảng cơ sở dữ liệu.
DataColumn
○ Chứa tên và kiểu dữ liệu của một cột.
Trang 6ADO.NET (tt)
Các lớp cơ sở dữ liệu chuyên biệt
SqlCommand, OleDbCommand
○ Thực thi lệnh SQL hoặc lời gọi stored procedure.
SqlConnection, OleDbConnection
○ Kết nối với cơ sở dữ liệu.
SqlDataAdapter, OleDbDataAdapter
○ Chứa các câu lệnh select, insert, update, và delete, được sử
dụng để tạo một DataSet và cập nhật Database.
SqlDataReader, OleDbDataReader
○ Bộ dữ liệu chỉ đọc, kết nối với DataReader.
SqlParameter, OleDbParameter
○ Tham số cho một stored procedure.
Trang 7Database Connection
Đoạn mã sau đây mô tả cách để tạo, mở và đóng một
kết nối đến cơ sở dữ liệu Northwind:
1 using System.Data.SqlClient;
2 string source = "server=(local);
database=Northwind; uid=sa; pwd=sa";
3 SqlConnection conn = new SqlConnection(source);
4 conn.Open();
5 // SQL truy vấn …
6 conn.Close();
Trang 8liệu hay sử dụng Store Procedure.
1 string select = "SELECT ContactName,
CompanyName FROM Customers";
2 SqlCommand cmd = new SqlCommand(select,
conn);
SQL hay Store Procedure.
Trang 9Command (tt)
CommandType Example
Text
(default)
String select = "SELECT ContactName FROM Customers";
SqlCommand cmd = new SqlCommand(select , conn);
StoredProcedure SqlCommand cmd = new
SqlCommand("CustOrderHist", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CustomerID", "QUICK");
TableDirect OleDbCommand cmd = new
OleDbCommand("Categories", conn);
cmd.CommandType = CommandType.TableDirect;
Trang 10Command (tt)
Thực thi Command
ExecuteNonQuery()
○ Thực thi các command không trả về kết quả gì cả
ExecuteReader()
○ Thực thi các command và trả về kiểu
IDataReader
ExecuteScalar()
○ Thực thi các command và trả về một giá trị đơn
Trang 11Gọi Stored Procedure
CREATE PROCEDURE SelectCustomers
(
@CustomerID nchar(5),
@Count int OUT
)
AS
Begin
Select @Count = count(*) From Customers Where CustomerID
> @CustomerID
Select * From Customers Where CustomerID = @CustomerID
End
Trang 12Gọi Stored Procedure (tt)
1 SqlCommand cmd = new SqlCommand("SelectCustomers", conn);
2 cmd.CommandType = CommandType.StoredProcedure;
1 SqlParameter pa1 = new SqlParameter("@CustomerID",
comboBox1.Text);
2 SqlParameter pa2 = new SqlParameter("@Count",
SqlDbType.Int);
3 pa2.Direction = ParameterDirection.Output;
4 cmd.Parameters.Add(pa1);
5 cmd.Parameters.Add(pa2);
3 SqlDataAdapter da = new SqlDataAdapter(cmd);
Trang 13Data Reader
Data reader là cách đơn giản nhất và nhanh nhất để
chọn một vài dữ liệu từ một nguồn cơ sơ dữ liệu,
nhưng có ít tính năng.
2 SqlDataReader aReader = cmd.ExecuteReader();
while(aReader.Read())
Console.WriteLine(" '{0}' from {1}" , aReader.GetString(0) , aReader.GetString(1));
3 aReader.Close();
Trang 14 DataSet
DataTable
○ DataColumn
○ UniqueConstraint
○ ForeignKeyConstraint
DataRelation
DefaultView
Trang 15DataSet (tt)
1 SqlDataAdapter da = new SqlDataAdapter(select,
conn);
2 DataSet ds = new DataSet();
3 da.Fill(ds , "Customers");
4 foreach(DataRow row in ds.Tables
["Customers"].Rows)
5 Console.WriteLine("'{0}' from {1}”, row[0],
row[1]);
Trang 161 SqlDataAdapter da = new
SqlDataAdapter(select, conn);
2 DataSet ds = new DataSet();
3 da.Fill(ds , "Customers");
4 dataGridView1.DataSource = ds.Tables[0];
Trang 17DataGridView (tt)
Trang 18Cập nhật dữ liệu
Trang 19Cập nhật dữ liệu
Cơ bản thực thi các câu lệnh SQL cập nhật:
Insert, Update, Delete
Có 2 cách:
Thực thi trực tiếp câu lệnh SQL.
Gọi Store Procedure.