MÔ HÌNH KẾT NỐI CƠ SỞ DỮ LIỆU ADO.NET
I. Giới thiệu về ADO.NET
- ADO.NET một trong các lớp nằm trong bộ t viện lớp s của NET
Framework để cho phép các ng dụng Windows(như c#, VB.net) hay các ng
dụng Web(như ASP.Net) thao tác dễ dàng vi các nguồn dữ liệu.
- Mục tiêu chính của ADO.NET là:
o Cung cấp các lớp để thao tác dữ liu trong cả hai môi trường là phi kết nối
(Disconnected data) và kết nối (Connected data).
o Tích hợp chặt chẽ vi XML (Extensible Markup Language)
o Tương tác với nhiều nguồn dữ liệu thông qua mô tả chung
o Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server)
o Làm việc trên i trường Internet
- Các lớp của ADO.NET được đặt trong Namespase là System.Data
- ADO.NET bao gồm 2 provider đ thao tác với các s dữ liệu OLEDB
provider (nằm trong System.Data.OLEDB) dùng để truy xuất đến bất kỳ CSDL
hỗ trợ OLEDB; SQL Provider dữ liệu (nằm trong System.Data.SQLClient)
chuyên dùng để truy xuất đến CSDL SQL Server (Không qua OLE DB nên nhanh
hơn).
- Vị trí ADO.NET trong kiến trúc của .NET Framework
Từ kiến trúc ta tây rằng ADO.NET là một phn nội tại của .NET Framework, do vậy
thể được sử dụng trong tất cả các ngôn ngữ hộ trợ .NET nC#, VB.Net…
không sự khác biệt nào (Tức là các chức năng cũng như cách sử dụng hoàn toàn
giống nhau).
- ADO.NET được thiết kế để kết nối với cả dữ liệu phi kết nối trong môi trường đa
tầng (Multi Tier). sử dụng XML để trao đổi dữ liệu phi kết nối do vy dễ
dàng khi giao tiếp giữa các ứng dụng không phải trên nền Windows.
ASP.NET Windows Forms
Drawing XML Data
Comman language Runtime
System Services
ADO.NET
Class Fra
mework
Vị trí của ADO.NET trong kiến trúc của .Net Framework
- ADO.NET hỗ trợ hoàn toàn XML, nghĩa là chúng ta có thnạp dữ liệu tmt tệp
XML và thao tác như mt CSDL, sau đó cũng có thể lưu kết quả ngược trở li tệp
XML do vy thể đi qua FireWall mt cách dễ dàng.
1. Các thành phần chính của ADO.NET
1. Connection
2. Command
3. Datareader
4. DataAdapter
5. DataSet
Các tầng kiến trúc của ADO.NET
2.1. Connection
Chc năng: Là đối tượng có nhiệm vụ thực hin nhim vụ kết nối đến CSDL
để các đối tượng như Command thao tác với CSDL thông qua Connection
này.
Khai báo ()
M kết ni: Thi hành phưng thức Open() đ m kết ni.
con.Open();
using System.Data.OleDb;
public partial class Form1 : Form
{
String str=("Provider = SQLOLEDB.1 ; Data source = KCNTT-
386D64051; Initial Catalog=QLSVien;; User ID=MinhHue;
PassWord=123456");
public OleDbConnection con=new OleDbConnection(st);
private void Form1_Load(object sender, EventArgs e)
{
con.Open();
if (con.State.ToString() =="Open" )
{
MessageBox.Show("Ket noi thanh cong" );
}
}
Data
DataReader
Connection
Command
Connection
Command
DataSet
Data Related Components
Managed Provider Compnent
DataStore
DataAdapter
Kiểm tra kết nối: Sau khi gọi phương thức Open, có thể xem đã kết nối thành
công hay không thông qua thuộc tính State của Connection:
if (con.State.ToString() =="Open" )
Đóng kết ni: Thi hành phương thức Close() để đóng kết nối
Để tránh li ta nên kiểm tra trạng thái kết nối
2.2 Command
Công dụng: Dùng để thực hiện các câu lệnh SQL thao tác vi CSDL như:
Insert, Update, Select, Delete…
Có 2 cách để to đối tượng Command
Có 4 cách để thực thi một lnh thông qua đối tượng Command
2.2.1 To Command từ phương thức tạo dựng
public OleDbCommand dc = new OleDbCommand("select * from sinhvien",
con);
2.2.2 To command từ phương thức CreateCommand của đối tượng Connection
OleDbCommand command = con.CreateCommand();
command.CommandText = "select * from sinhvien";
2.2.3 To Command bằng cách đặt các thuộc tính sau khi khai báo
OleDbCommand com = new OleDbCommand();
com.CommandType = CommandType.Text
com.CommandText ="Select * from sinhvien";
com.Connection = con;
Phương thức ExcuteReader: Phương thức này sẽ trả vmt tập các bản ghi,
nó tương đương với một Recordsetthường được sử dụng để thực thi các
câu lệnh truy vấn như Select. Kết quả có thể lưu trữ trong đối tượng
DataReader để thao tác.
Cú pháp: Biến_DataReader=com.ExcuteReader(); //com biến OleDbCommand.
Phương thức ExcuteScalar(): Phương thức này sẽ trả vphn tử cột đầu tiên
hàng đầu tiên trong bảng kết quả.
Phương thức này thường được sử dụng thực hiện câu lnh truy vấn Select mà kết
quả trả vchỉmột hàng một cột (Select Count(*) from sinhvien).
Phương thức ExcuteNonQuery: Được sử dụng để thực thi các câu lnh truy
vấn hành động: Insert, Update, Delete…
Phương thức ExcuteXMLReader: Tạo bộ đọc từ File XML, phương thức này
không có trong oleCommand chỉ có trong sqlCommand.
2.3 DataReader
Công dụng: Dùng để đón nhận kết quả trả về từ đối tượng Command. Nó tương t
mt RecordSet của ADO. Tuy nhiên dữ liệu chỉ đọc theo chiều tiến (Readoly).
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (con.State.ToString() == "Open")
{
con.Close();
}
}
Khai báo và lấy dữ liệu tCommand. Đối tượng DataReader không có phương
thức khởi tạo
2.4 DataAdapter
Công dụng: chức năng như một cầu nối giữa nguồn (tệp) dliệu
các bảng được cached trong bộ nhớ (đối tượng DataSet).
DataAdapter đin dữ liệu vào một DataSet hay DataTable từ mt
nguồn dữ liu sử dụng phương thức Fill(). Còn khi cập nht dữ liu
ngược trở lại nguồn dliu thì sử dụng phương thức Update() của đối
tượng DataAdapter.
Tạo một DataAdapter tathể tạo từ một đối tượng connection đang mở
hoặc từ mt chuỗi kết nối (connection chưa được mở).
private void button1_Click(object sender, EventArgs e)
{
StringBuilder st = new StringBuilder();
dc = new OleDbCommand("select * from sinhvien", con);
OleDbDataReader dr ; // Khai báo DataReader
dr = dc.ExecuteReader(); // Lấy dữ liệu từ Command
while (dr.Read() == true) // Duyệt qua các bản ghi
{
st.AppendLine(dr.GetValue(2).ToString() );
}
MessageBox.Show(st.ToString());
dr.Close();
dc.Dispose();
}
private void cmdShow_Click(object sender, EventArgs e)
{
da = new OleDbDataAdapter("select * from Sinhvien", con);
// Hoặc là
//String st="Provider = SQLOLEDB.1 ; Data source = KCNTT-
386D64051; Initial Catalog=QLSVien;; User ID=MinhHue; PassWord=123456";
//da = new OleDbDataAdapter("select * from Sinhvien",st);
da.Fill(ds, "SinhVien"); // Lưu trữ vào đối tượng DataSet
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "Sinhvien";
this.cmdadd.Enabled = true;
this.cmdShow.Enabled = false;
}
2.5 Đối tượng DataSet.
Đối tượng DataSet được coi như một kho chứa c
bảng (Table). Người s dụng thể thay đổi dữ
liu trong c bảng này khi muốn cập nhật vào
sdữ liệu tthi nh phương thức Update của
đối tượng DataAdapter.
- Các bảng trong DataSet có thể do DataAdapter
Fill vào hoặc cũng thể là các bảng được tạo
thành từ đối tượng DataTable.
- Các bảng này được quản bởi tập hợp Tables
của lớp DataSet
Ví dụ: Thêm một bảng vào DataSet và đặt tên bảng đó là bảng “SinhVien”.
II. Sử dụng ADO.NET
Trong ADO.NET có 2 hình kết nối và phi kết nối.
1. Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu
Để thao tác với cơ sở dữ liệu trong mô hình kết ni chúng ta cần sử dụng
đến các đối tượng:
- DataConnection: Dùng để mở kết nối đến cơ sở dữ liệu.
- DataCommand: Dùng để thực hiện các câu lệnh truy vấn SQL để lấy
về dữ liệu (Select) hoặc cập nhật dữ liu (Insert, Update, Delete).
- DataReader. Dùng để duyệt các bản ghi theo chiều tiến và chỉ đọc.
1.1 Lấy dữ liệu về.
b1. Cần khai báo một biến đối tượng DataConnection, và mkết nối đến cơ
sở dữ liệu.
b2. Khi cần lấy dữ liệu thì tạo một biến DataCommand gắn vi biến
DataConnection đã mở, với câu lệnh Select truy vấn dữ liệu cần lấy về.
b3. Khai báo biến DataReader
b4. Thi hành phương thức ExcuteReader() của biến đối tượng
DataCommand và gán cho biến đối tượng DataReader.
b5. Đọc và trình bày dữ liệu
b6. Đóng giải phóng các biến đối tượng nếu không cần thiết.
001 …. ….
002 …. ….
….
001 …. ….
002 …. ….
….
…….
DataSet
DataSet ds = new DataSet();
da = new OleDbDataAdapter("select * from Sinhvien", con);
da.Fill(ds, "SinhVien");