Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 11

M HNH KT NI C S D LIU ADO.

NET
I. Gii thiu v ADO.NET

- ADO.NET l mt trong cc lp nm trong b th vin lp c s ca NET


-

Framework cho php cc ng dng Windows(nh c#, VB.net) hay cc ng


dng Web(nh ASP.Net) thao tc d dng vi cc ngun d liu.
Mc tiu chnh ca ADO.NET l:
o Cung cp cc lp thao tc d liu trong c hai mi trng l phi kt ni
(Disconnected data) v kt ni (Connected data).
o Tch hp cht ch vi XML (Extensible Markup Language)
o Tng tc vi nhiu ngun d liu thng qua m t chung
o Ti u truy cp ngun d liu (OLE DB & SQL server)
o Lm vic trn mi trng Internet
Cc lp ca ADO.NET c t trong Namespase l System.Data
ADO.NET bao gm 2 provider thao tc vi cc c s d liu l OLEDB
provider (nm trong System.Data.OLEDB) dng truy xut n bt k CSDL
c h tr OLEDB; SQL Provider d liu (nm trong System.Data.SQLClient)
chuyn dng truy xut n CSDL SQL Server (Khng qua OLE DB nn nhanh
hn).
V tr ADO.NET trong kin trc ca .NET Framework

ASP.NET

Windows Forms

Class Framework
Drawing

XML

Data
Data

ADO.NET

Comman language Runtime


System Services

V tr ca ADO.NET trong kin trc ca .Net Framework


T kin trc ta ty rng ADO.NET l mt phn ni ti ca .NET Framework, do vy
n c th c s dng trong tt c cc ngn ng h tr .NET nh C#, VB.Net m
khng c s khc bit no (Tc l cc chc nng cng nh cch s dng hon ton
ging nhau).

- ADO.NET c thit k kt ni vi c d liu phi kt ni trong mi trng a


tng (Multi Tier). N s dng XML trao i d liu phi kt ni do vy d
dng khi giao tip gia cc ng dng khng phi trn nn Windows.
- ADO.NET h tr hon ton XML, ngha l chng ta c th np d liu t mt tp
XML v thao tc nh mt CSDL, sau cng c th lu kt qu ngc tr li tp
XML do vy c th i qua FireWall mt cch d dng.
1. Cc thnh phn chnh ca ADO.NET
1.
Connection
2.
Command
3.
Datareader
4.
DataAdapter
5.
DataSet
DataSet

Data Related Components

DataReader
Managed Provider Compnent

Command

Command

Connection

Connection

DataAdapter
DataStore

Data
Cc tng kin trc ca ADO.NET

2.1. Connection
Chc nng: L i tng c nhim v thc hin nhim v kt ni n CSDL
cc i tng nh Command thao tc vi CSDL thng qua Connection
ny.
Khai bo ()
using System.Data.OleDb;
public partial class Form1 : Form
{
String str=("Provider = SQLOLEDB.1 ; Data source = KCNTT386D64051; 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" );
}
}

M kt ni: Thi hnh phng thc Open() m kt ni.


con.Open();
Kim tra kt ni: Sau khi gi phng thc Open, c th xem kt ni thnh
cng hay khng thng qua thuc tnh State ca Connection:
if (con.State.ToString() =="Open" )

ng kt ni: Thi hnh phng thc Close() ng kt ni


trnh li ta nn kim tra trng thi kt ni
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (con.State.ToString() == "Open")
{
con.Close();
}
}

2.2 Command
Cng dng: Dng thc hin cc cu lnh SQL thao tc vi CSDL nh:
Insert, Update, Select, Delete
C 2 cch to i tng Command
C 4 cch thc thi mt lnh thng qua i tng Command
2.2.1 To Command t phng thc to dng
public OleDbCommand dc = new OleDbCommand("select * from sinhvien",
con);

2.2.2 To command t phng thc CreateCommand ca i tng Connection


OleDbCommand command = con.CreateCommand();
command.CommandText = "select * from sinhvien";

2.2.3 To Command bng cch t cc thuc tnh sau khi khai bo


OleDbCommand com = new OleDbCommand();
com.CommandType = CommandType.Text
com.CommandText ="Select * from sinhvien";
com.Connection = con;

Phng thc ExcuteReader: Phng thc ny s tr v mt tp cc bn ghi,


n tng ng vi mt Recordset v thng c s dng thc thi cc
cu lnh truy vn nh Select. Kt qu c th lu tr trong i tng
DataReader thao tc.
C php: Bin_DataReader=com.ExcuteReader(); //com bin OleDbCommand.
Phng thc ExcuteScalar(): Phng thc ny s tr v phn t ct u tin
hng u tin trong bng kt qu.
Phng thc ny thng c s dng thc hin cu lnh truy vn Select m kt
qu tr v ch c mt hng v mt ct (Select Count(*) from sinhvien).
Phng thc ExcuteNonQuery: c s dng thc thi cc cu lnh truy
vn hnh ng: Insert, Update, Delete

Phng thc ExcuteXMLReader: To b c t File XML, phng thc ny


khng c trong oleCommand ch c trong sqlCommand.
2.3 DataReader
Cng dng: Dng n nhn kt qu tr v t i tng Command. N tng t
mt RecordSet ca ADO. Tuy nhin d liu l ch c theo chiu tin (Readoly).
Khai bo v ly d liu t Command. i tng DataReader khng c phng
thc khi to
private void button1_Click(object sender, EventArgs e)
{
StringBuilder st = new StringBuilder();
dc = new OleDbCommand("select * from sinhvien", con);
OleDbDataReader dr ;
// Khai bo DataReader
dr = dc.ExecuteReader();
// Ly d liu t Command
while (dr.Read() == true)
// Duyt qua cc bn ghi
{
st.AppendLine(dr.GetValue(2).ToString() );
}
MessageBox.Show(st.ToString());
dr.Close();
dc.Dispose();
}

2.4 DataAdapter
Cng dng: C chc nng nh mt cu ni gia ngun (tp) d liu
v cc bng c cached trong b nh (i tng DataSet).
DataAdapter in d liu vo mt DataSet hay DataTable t mt
ngun d liu s dng phng thc Fill(). Cn khi cp nht d liu
ngc tr li ngun d liu th s dng phng thc Update() ca i
tng DataAdapter.
To mt DataAdapter ta c th to t mt i tng connection ang m
hoc t mt chui kt ni (connection cha c m).
private void cmdShow_Click(object sender, EventArgs e)
{
da = new OleDbDataAdapter("select * from Sinhvien", con);
// Hoc l
//String st="Provider = SQLOLEDB.1 ; Data source = KCNTT386D64051; Initial Catalog=QLSVien;; User ID=MinhHue; PassWord=123456";

//da = new OleDbDataAdapter("select * from Sinhvien",st);


da.Fill(ds, "SinhVien"); // Lu tr vo i tng DataSet
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "Sinhvien";
this.cmdadd.Enabled = true;
this.cmdShow.Enabled = false;

2.5 i tng DataSet.


.
i tng DataSet c coi nh mt kho cha cc 001 .
002 .
.
bng (Table). Ngi s dng c th thay i d
.
liu trong cc bng ny v khi mun cp nht vo
c s d liu th thi hnh phng thc Update ca 001 .
.
i tng DataAdapter.
002 .
.
- Cc bng trong DataSet c th do DataAdapter .
Fill vo hoc cng c th l cc bng c to .
DataSet
thnh t i tng DataTable.
- Cc bng ny c qun l bi tp hp Tables
ca lp DataSet
V d: Thm mt bng vo DataSet v t tn bng l bng SinhVien.
DataSet ds = new DataSet();
da = new OleDbDataAdapter("select * from Sinhvien", con);
da.Fill(ds, "SinhVien");

II. S dng ADO.NET


Trong ADO.NET c 2 m hnh kt ni v phi kt ni.
1. S dng m hnh kt ni thao tc vi c s d liu
thao tc vi c s d liu trong m hnh kt ni chng ta cn s dng
n cc i tng:
- DataConnection: Dng m kt ni n c s d liu.
- DataCommand: Dng thc hin cc cu lnh truy vn SQL ly
v d liu (Select) hoc cp nht d liu (Insert, Update, Delete).
- DataReader. Dng duyt cc bn ghi theo chiu tin v ch c.
1.1 Ly d liu v.
b1. Cn khai bo mt bin i tng DataConnection, v m kt ni n c
s d liu.
b2. Khi cn ly d liu th to mt bin DataCommand gn vi bin
DataConnection m, vi cu lnh Select truy vn d liu cn ly v.
b3. Khai bo bin DataReader
b4. Thi hnh phng thc ExcuteReader() ca bin i tng
DataCommand v gn cho bin i tng DataReader.
b5. c v trnh by d liu
b6. ng v gii phng cc bin i tng nu khng cn thit.

V d:
public partial class HuongKetNoi : Form
{
//public OleDbConnection con=new OleDbConnection()
private OleDbConnection con = new OleDbConnection("Provider =
SQLOLEDB.1 ; Data source = KCNTT-386D64051; Initial Catalog=QLSVien;; User
ID=MinhHue; PassWord=123456");
// b1. Khai bo bin T DataConection
private OleDbCommand dc;
private void HuongKetNoi_Load(object sender, EventArgs e)
{
con.Open();
//b1. M kt ni
}
private void button1_Click(object sender, EventArgs e)
{
StringBuilder st = new StringBuilder();
// b2. to mt bin DataCommand
dc = new OleDbCommand("select * from sinhvien", con);
OleDbDataReader dr ;
// b3. To bin DataReader
dr = dc.ExecuteReader(); // b4.
//if (con.State.ToString() == "Open")
//{
// Ch nu on m ny c thc thi
//
con.Close();
// th on chng trnh ny s li
//}
// Ti sao?

//b5.
while (dr.Read() == true)
{
st.AppendLine(dr.GetValue(2).ToString()
}
MessageBox.Show(st.ToString());
// b6.
dr.Close();
dc.Dispose();

);

1.2 Thc hin cc thao tc trn c s d liu


Cc thao tc trn c s d liu c th l thm mi, sa, xa.
b1. Cn khai bo mt bin i tng DataConnection, v m kt ni n c
s d liu.
b2. Khi cn ly d liu th to mt bin DataCommand gn vi bin
DataConnection m.

b3. Gn gi tr cho thuc tnh CommandType ca bin i tng


DataCommand
b4. Gn cu lnh truy vn (insert, update, delete, gi store procedure) cho
thuc tnh CommandText ca bin i tng DataCommand
b5. Thi hnh phng thc ExcuteNonquery() ca bin i tng
DataCommand
b6. ng v gii phng cc bin i tng nu khng cn thit.
V d 1: Insert
private void cmdcapnhat_Click(object sender, EventArgs e)
{
dc = new OleDbCommand();
// b2.
dc.Connection = con;
// b3. c th b3 khng cn thit nu gt l CommandType.Text;
dc.CommandType = CommandType.Text; // Gi tr ny l gt mc nh
// b4.
dc.CommandText = "Insert into sinhvien values('" +
this.Txtmalop.Text + "','" + this.TxtmaSV.Text + "','" + this.txtTen.Text +
"')";
dc.ExecuteNonQuery();
// b5.
dc.Dispose();
// b6.
}

V d 2: Update
private void cmdupdate_Click(object sender, EventArgs e)
{
dc = new OleDbCommand("select * from sinhvien", con);
dc.CommandText = "Update sinhvien set malop='" +
this.Txtmalop.Text + "',masvien='" + this.TxtmaSV.Text + "', tensvien='" +
this.txtTen.Text + "' where masvien='" + this.TxtmaSV.Text + "'" ;
dc.ExecuteNonQuery();
dc.Dispose();
}

V d 3: Delete
private void cmddel_Click(object sender, EventArgs e)
{
dc = new OleDbCommand("select * from sinhvien", con);
dc.CommandText = "delete from sinhvien where masvien='" +
this.TxtmaSV.Text + "'";
dc.ExecuteNonQuery();
dc.Dispose();
}

V d 4: Gi th tc lu tr ni (Stored procedure).
private void CmdStoredProc_Click(object sender, EventArgs e)
{
dc = new OleDbCommand();
dc.Connection = con;
dc.CommandType = CommandType.StoredProcedure;
dc.CommandText = "NhapSinhVien"; // Th tc lu tr ni
// To i tng Parameter to ra cc tham s v truyn
vo // gi tr cho cc tham s trong th tc lu tr ni
// NhapSinhVien
OleDbParameter p;
p = new OleDbParameter("@malop", OleDbType.VarChar, 20);
p.Value = "01.1";
dc.Parameters.Add(p);
p = new OleDbParameter("@MaSv", OleDbType.VarChar, 20);
p.Value = "01.1.190";
dc.Parameters.Add(p);
p = new OleDbParameter("@TenSV", OleDbType.VarChar);
p.Value = "Chu van quenh";
dc.Parameters.Add(p);
// gi phng thc Excute thi hnh.
dc.ExecuteNonQuery();
}

2. S dng m hnh phi kt ni thao tc vi c s d liu


DataSet
Table

.NET Data Provider


DataAdapter

Table

DataConnecton
Data Base

thao tc vi c s d liu trong m hnh phi kt ni chng ta cn s dng


n cc i tng:

- DataConnection: Dng m kt ni n c s d liu. (C th c


hoc khng)
- DataAdapter
- DataSet
- Ngoi ra chng ta cn s dng mt s cc i tng khc nh
DataTable, DataRow
2.1 Ly d liu v thao tc.
b1. Cn khai bo mt bin i tng DataConnection, v m kt ni n
c s d liu. (Bc ny c th khng cn thit)
b2. To bin DataAdapter, Ch r ngun d liu cn ly gn vi mt i
tng DataConnection m hoc mt xu kt ni n c s d liu.
b3. Thi hnh phng thc Fill in d liu ly v vo DataSet.
b4. S dng tp hp Tables ca i tng DataSet lm vic vi d liu
ly v.
b5. ng hoc gii phng cc i tng nu khng cn thit.
V d:
private void cmdShow_Click(object sender, EventArgs e)
{
// B2. Cch ny cn c b1.
//da = new OleDbDataAdapter("select * from Sinhvien", con);
// Cch ny khng cn c b1.
da = new OleDbDataAdapter("select * from Sinhvien",
"Provider = SQLOLEDB.1 ; Data source = KCNTT-386D64051; Initial
Catalog=QLSVien;; User ID=MinhHue; PassWord=123456");
da.Fill(ds, "SinhVien");
// Ly dl thng qua tp hp Tables ca i tng DataSet
//this.dataGridView1.DataSource = ds.Tables["SinhVien"] ;
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "Sinhvien";
this.cmdadd.Enabled = true;
this.cmdShow.Enabled = false;
}

2.2 Thc hin cc thao tc trn c s d liu


Cc thao tc trn c s d liu c th l thm mi, sa, xa.
b1. Khai bo mt bin i tng DataConnection, v m kt ni n c s
d liu. (Bc ny c th khng cn thit).
b2. Khai bo v to i tng DataAdapter
b3. Thay i d liu trn bng d liu nm trong DataSet.
b4. To i tng CommandBuilder gn vi bin i tng DataAdapter.
b5. Thi hnh phng thc Update cp nht s thay i d liu trong bng
ln c s d liu.
b6. ng v gii phng cc bin i tng nu khng cn thit.

private void cmdShow_Click(object sender, EventArgs e)


{
// b2.
da = new OleDbDataAdapter("select * from Sinhvien", con);
da.Fill(ds, "SinhVien");
3. DataGridview
v ADO.NET
}
private
void
cmdadd_Click(object
EventArgs
e)
i tng DataGridView dng sender,
trnh by
d liu trong
DataSet,
{
DataTable, DataRow
DataView
dr;di hnh thc khc nhau.
DataTable
3.1. Hin th
d liu dt;
dt = ds.Tables[0];
S dng
thuc tnh DataSource v thuc tnh DataMember gn
dr = dt.NewRow();
i tng
// b3.DataTable, DataSet, DataView
odr[0]
Nu =l this.Txtmalop.Text;
DataTable, DataView, th ta ch cn gn gi tr cho
dr[1] = this.TxtmaSV.Text;
thuc= tnh
DataSource.
dr[2]
this.txtTen.Text;
dt.Rows.Add(dr);
o Nu l DataSet th trong thuc tnh DataMember cn ch r
// b4.
tn bng cn hin th
DataSet.
OleDbCommandBuilder
cbd
= liu
new trong
OleDbCommandBuilder(da);
// b5.
int i = da.Update(ds.Tables[0]);
}

private void cmdShow_Click(object sender, EventArgs e)


{
try
{
da = new OleDbDataAdapter("select * from Sinhvien", con);
da.Fill(ds, "SinhVien");
//this.dataGridView1.DataSource = ds.Tables["SinhVien"] ;
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "Sinhvien";
}
catch (Exception Er)
{
MessageBox.Show(Er.Message);
}

3.2. Cp nht d liu t DataGrid vo c s d liu.


Khi ngi s dng thay i d liu trn DataGrid thc ra l thay i d liu trn
DataTable.
private void cmdcapnhat_Click(object sender, EventArgs e)
{
// da l i tng DataAdapter
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
int i=da.Update(ds.Tables[0] );
}

4. Lp DataTable, DataRow (c ti liu).

You might also like