You are on page 1of 38

Bi ging mn hc

Thao tc CSDL vi ADO.NET

Khoa Cng ngh Thng tin Trng i hc Khoa hc T nhin

Thit k v Lp trnh Web 2


2007 Khoa Cng ngh thng tin

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

ADO.NET l g?
ADO.NET (ActiveX Data Object .NET) Cng ngh ca Microsoft Pht trin t nhin t ADO Cung cp cc i tng v hm th vin dng kt ni v x l trn CSDL

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

S lc lch s pht trin


Native API
DB API DB API DB API

Application Database

Open DataBase Connectivity


DB API

Driver
ODBC API

DB API DB API

ODBC

Driver Driver

Application Database
5 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

S lc lch s pht trin (cont)


OLEDB v ADO
Provider

ADO OLE DB Application

Provider

Non-Relational Data
Provider Provider

Driver ODBC Driver Driver Relational Data

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Kin trc ADO.NET


ADO.NET
.NET Data Provider

SQL Server Oracle

OLE DB

OLE DB

Application

ADO.NET

Relational Data

ODBC

ODBC

Non-Relational Data

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Kin trc ADO.NET (cont)


.NET Data Provider ???Connection XML ???Command ???DataReader DataSet ???DataAdapter

Data Source

Cc h qun tr CSDL hn ch s lng kt ni. Duy tr qu nhiu kt ni lm cho server qu ti.

C ch kt ni (Connected) C ch khng kt ni (Disconnected)


9 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet

10

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider


.NET Data Provider
???Connection
???Transaction

???DataAdapter
SelectCommand

???Command
Parameters ???Parameter

InsertCommand

UpdateCommand

???DataReader

DeleteCommand

11

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - Connection


Connection

Application

Data Source

Thuc tnh v phng thc ca Connection:


ConnectionString: loi Data Source cn kt ni. Open(): thit lp kt ni n Data Source. Close(): ngt kt ni n Data Source.

12

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Connection (cont)


SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = server=localhost; database=Northwind; user id=sa; password=sa; cnn.Open(); // Does something here.

cnn.Close();

13

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Connection string (Access, SQL Server,)


To connection string
Database ODBC/OLEDB Connection String
Driver={Microsoft Access Driver (*.mdb)}; DBQ=ngDnFileAccess Hoc Provider=Microsoft.Jet.OLEDB.4.0; Data Source=ngDnFileAccess Driver={SQLServer}; Server=ServerName; Database=DatabaseName; Uid=Username; Pwd=Password;

Microsoft Access

Microsoft SQL

Hoc Provider=SQLOLEDB;Data Source=ServerName; Initial Catalog=DatabaseName; UserId=Username; Password=Password;

String strConn = string.Format(Driver={Microsoft Access Driver (*.mdb)}; DBQ={0}, Server.MapPath(database\mydb.mdb));

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

ng dn ti tp tin Access
Server.MapPath(StringPath)
nh x ng dn tng i StringPath thnh ng dn n th mc vt l trn Server V d: Gi s tp tin asp s dng hm Server.MapPath c lu ti D:\MyWebsite

Kt qu Server.MapPath(myDB.mdb); Server.MapPath(Database/myDB.mdb); Server.MapPath(../myDB.mdb); D:\MyWebsite\myDB.mdb D:\MyWebsite\Database\myDB.mdb D:\myDB.mdb

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - Command

011010011 Connection Application

011010011 Data Source

Command

16

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - Command


Thuc tnh v phng thc ca Command:
Connection: kt ni dng thc hin cu lnh. CommandText: cu lnh cn thc hin trn Data Source. CommandType: loi cu lnh trong CommandText (Text, TableDirect, StoredProc). ExecuteScalar(): thc hin cu lnh trong CommandText, kt qu tr v l mt gi tr n. ExecuteNonQuery(): thc hin cu lnh trong CommandText v khng c kt qu tr v. ExecuteReader(): thc hin cu lnh trong CommandText, kt qu tr v l mt DataReader.

17

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Command (cont)


SqlConnection cnn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); cnn.ConnectionString = server=localhost; database=Northwind; user id=sa; password=sa; cmd.Connection = cnn; cmd.CommandText = SELECT COUNT(*) FROM Orders;

cmd.CommandType = CommandType.Text;
cnn.Open(); int count = (int)cmd.ExecuteScalar(); cnn.Close();

18

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Command (cont)


SqlConnection cnn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); cnn.ConnectionString = server=localhost; database=QLHS; user id=sa; password=sa; cmd.Connection = cnn; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(5, Nguyn Vn A, 8.5); cmd.CommandType = CommandType.Text; cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close();
19 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - Parameter


Mc ch s dng:
Mt vi gi tr trong cu lnh ch bit khi thc hin cu lnh. Cn thc hin cu lnh nhiu ln vi cc gi tr khc nhau.

Cc bc thc hin:
Tham s ha cu lnh: ? hoc @[tn tham s]. To cc parameters tng ng cho command. t gi tr cho cc parameter mi khi dng command thc hin cu lnh.

20

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Parameter (cont)


Tham s ha
SQL Data Provider:
cmd.CommandText = SELECT * FROM HocSinh WHERE tenhocsinh = @ten; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(@id, @ten, @dtb);

Cc provider khc:
cmd.CommandText = SELECT * FROM HocSinh WHERE tenhocsinh = ?; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(?, ?, ?);

21

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Parameter (cont)


To cc parameter cho Command:
Sql Data Provider:
cmd.Parameters.Add(@id, SqlDbType.Int); cmd.Parameters.Add(@ten, SqlDbType.NVarChar); cmd.Parameters.Add(@dtb, SqlDbType.Float);

OleDb Data Provider:


cmd.Parameters.Add(@id, OleDbType.Integer); cmd.Parameters.Add(@ten, OleDbType.VarWChar); cmd.Parameters.Add(@dtb, OleDbType.Numeric);

22

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider Parameter (cont)

t gi tr cho cc parameter
foreach (Student s in studentList) { cmd.Parameters[@id] = i; cmd.Parameters[@ten] = s.studentName; cmd.Parameters[@dtb] = s.studentMarks; cmd.ExecuteNonQuery(); }
23 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider DataReader

Read() ExecuteReader() DataReader Application Connection 011010011 011010011 Data Source

Command BookID i BookName Book i Author Author i

24 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - DataReader


Thuc tnh v phng thc ca DataReader:
HasRow: cho bit cu truy vn c tr v d liu? Read(): c mt mu tin vo DataReader. Ton t [ i ]: truy xut n ct i trong mu tin c c. Close(): ng DataReader.

Lu :
Truy xut tun t v khng quay lui. Khng cp nht d liu. C ch kt ni.

25

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider DataReader (cont)


SqlConnection cnn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); cnn.ConnectionString = server=localhost; database=Northwind; user id=sa; password=sa); cmd.Connection = cnn; cmd.CommandText = SELECT * FROM Orders; cmd.CommandType = CommandType.Text;

cnn.Open();
IDataReader dr = cmd.ExecuteReader(); while (dr.Read()) MessageBox.Show(dr[CustomerID].ToString()); dr.Close(); cnn.Close();
26 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider - DataAdapter


DataAdapter
SelectCommand

DataSet

InsertCommand UpdateCommand

Data Source
DeleteCommand

Thuc tnh v phng thc ca DataAdapter:


Fill(DataSet): dng SelectCommand ly d liu t Data Source vo DataSet. Update(DataSet): dng InsertCommand, UpdateCommand v DeleteCommand cp nht d liu trong DataSet vo Data Source.

27

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

.NET Data Provider DataAdapter (cont)


SqlDataAdapter da = new SqlDataAdapter( SELECT * FROM Orders, server=localhost; database=Northwind; user id=sa; password=sa); DataSet ds = new DataSet(); da.Fill(ds); // Does something on the DataSet. da.Update(ds);
28 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

Ni dung
S lc lch s pht trin Kin trc ADO.NET .NET Data Provider DataSet

29

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet

DataSet l g?

nh x DataSet Data Source

DataSet l c s d liu c lu tr trong b nh chnh (in-memory database). C ch khng kt ni.


30 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet (cont)
DataSet DataTable
Columns DataColumn

Tables

Rows

DataRow

Relations

DataRelation

31

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet - DataTable
DataTable th hin mt bng trong c s d liu. Cc thuc tnh v phng thc:
TableName: tn bng. Columns: danh sch cc ct (DataColumn). Rows: danh sch cc mu tin (DataRow). PrimaryKey: danh sch cc ct lm kha chnh (DataColumn). NewRow(): to mt mu tin mi.

32

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet - DataColumn
DataColumn th hin mt ct trong bng. Cc thuc tnh v phng thc:
ColumnName: tn ct. DataType: kiu d liu ct.

33

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet - DataRow
DataRow th hin mt mu tin trong bng. Cc thuc tnh v phng thc:
RowState: trng thi ca mu tin (Added, Modified, Deleted, Unchanged, Detach). Ton t [ i ]: truy xut n ct i ca mu tin. Delete(): nh du xa mu tin.

34

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet (cont)
DataTable table = new DataTable(SinhVien);

table.Columns.Add(new DataColumn(MSSV, Type.GetType(Int32)); table.Columns.Add(new DataColumn(HoTen, Type.GetType(string));

table.PrimaryKey = new DataColumn[] { table.Columns[MSSV] };

DataRow row = table.NewRow(); row[MSSV] = 123;

row[HoTen] = Nguyn Vn A;
table.Rows.Add(row);

35

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet (cont)
SqlDataAdapter da = new SqlDataAdapter( SELECT * FROM Orders, server=localhost; database=Northwind; user id=sa; password=sa); DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows)

row[OrderDate] = DateTime.Now;
da.Update(ds);

36

2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet (cont)
SqlDataAdapter da = new SqlDataAdapter( SELECT * FROM Orders, server=localhost; database=Northwind; user id=sa; password=sa); DataSet ds = new DataSet();

da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) if (row[CustomerID].ToString() == Nguyn Vn A) row.Delete(); da.Update(ds);


37 2007 Khoa CNTT - HKHTN

Thit k v Lp trnh Web 2 Thao tc CSDL vi ADO.NET

DataSet (cont)
So snh DataSet v DataReader:
Tc truy xut. B nh lu tr. Thun tin trong thao tc. C ch kt ni v khng kt ni.

38

2007 Khoa CNTT - HKHTN

You might also like