Tải bản đầy đủ (.pdf) (38 trang)

Tài liệu Thao tác CSDL với ADO.NET doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (959.36 KB, 38 trang )

Bài giảng môn học
© 2007 Khoa Công nghệ thông tin
Thiết kế và Lập trình Web 2
Thao tác CSDL với ADO.NET
Khoa Công nghệ Thông tin
Trường Đại học Khoa học Tự nhiên
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
2
Nội dung
 Sơ lược lịch sử phát triển
 Kiến trúc ADO.NET
 .NET Data Provider
 DataSet
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
3
Nội dung
Sơ lược lịch sử phát triển
 Kiến trúc ADO.NET
 .NET Data Provider
 DataSet
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
ADO.NET là gì?
 ADO.NET (ActiveX Data Object .NET)
– Công nghệ của Microsoft
– Phát triển tự nhiên từ ADO
– Cung cấp các đối tượng và hàm thư viện dùng để kết nối và xử
lý trên CSDL
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET


© 2007 Khoa CNTT - ĐHKHTN
5
Sơ lược lịch sử phát triển
ODBC
Driver
Driver
Driver
Application
Application
Database
Database
DB API
DB API
DB API
ODBC API
DB API
DB API
DB API
 Native API
 Open DataBase Connectivity
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
6
ADO
OLE DB
Sơ lược lịch sử phát triển (cont)
Application
Non-Relational Data
Relational Data
 OLEDB và ADO

ODBC
Driver
Driver
Driver
Provider
Provider
Provider
Provider
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
7
Nội dung
 Sơ lược lịch sử phát triển
Kiến trúc ADO.NET
 .NET Data Provider
 DataSet
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
8
ADO.NET
ODBC
Kiến trúc ADO.NET
Application
Non-Relational Data
Relational Data
OLE DB
Oracle
SQL Server
ODBC
OLE DB

.NET Data Provider
 ADO.NET
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
9
Kiến trúc ADO.NET (cont)
???Connection
???DataAdapter
???Command
???DataReader
.NET Data Provider
Data Source
DataSet
XML
 Cơ chế kết nối (Connected)
 Cơ chế không kết nối (Disconnected)
 Các hệ quản trị CSDL hạn chế số lượng kết nối.
 Duy trì quá nhiều kết nối làm cho server quá tải.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
10
Nội dung
 Sơ lược lịch sử phát triển
 Kiến trúc ADO.NET
.NET Data Provider
 DataSet
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
11
.NET Data Provider

.NET Data Provider
???Connection
???Transaction
???Command
???DataReader
???DataAdapter
SelectCommand
DeleteCommand
UpdateCommand
InsertCommand
Parameters
???Parameter
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
12
.NET Data Provider - Connection
 Thuộc tính và phương thức của Connection:
ConnectionString: loại Data Source cần kết nối.
Open(): thiết lập kết nối đến Data Source.
Close(): ngắt kết nối đến Data Source.
Data Source
Application
Connection
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
13
.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();
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
Connection string (Access, SQL Server,…)
 Tạo connection string
Database ODBC/OLEDB Connection String
Microsoft Access
Driver={Microsoft Access Driver (*.mdb)}; DBQ=ĐườngDẫnFileAccess
Hoặc
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=ĐườngDẫnFileAccess
Microsoft SQL
Driver={SQLServer}; Server=ServerName; Database=DatabaseName;
Uid=Username; Pwd=Password;
Hoặc
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”));
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
Đường dẫn tới tập tin Access
 Server.MapPath(StringPath)
– ánh xạ đường dẫn tương đối StringPath thành đường
dẫn đến thư mục vật lý trên Server
– Ví dụ: Giả sử tập tin asp sử dụng hàm Server.MapPath
được lưu tại D:\MyWebsite
Kết quả
Server.MapPath(“myDB.mdb”); D:\MyWebsite\myDB.mdb

Server.MapPath(“Database/myDB.mdb”); D:\MyWebsite\Database\myDB.mdb
Server.MapPath(“ /myDB.mdb”); D:\myDB.mdb
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
16
.NET Data Provider - Command
Data Source
Application
Connection
011010011011010011
Command
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
17
.NET Data Provider - Command
 Thuộc tính và phương thức của Command:
Connection: kết nối dùng để thực hiện câu lệnh.
CommandText: câu lệnh cần thực hiện trên Data Source.
CommandType: loại câu lệnh trong CommandText (Text,
TableDirect, StoredProc).
ExecuteScalar(): thực hiện câu lệnh trong CommandText, kết
quả trả về là một giá trị đơn.
ExecuteNonQuery(): thực hiện câu lệnh trong CommandText
và không có kết quả trả về.
ExecuteReader(): thực hiện câu lệnh trong CommandText,
kết quả trả về là một DataReader.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
18
.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();
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
19
.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, „Nguyễn Văn A‟, 8.5)”;
cmd.CommandType = CommandType.Text;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
20
.NET Data Provider - Parameter

 Mục đích sử dụng:
Một vài giá trị trong câu lệnh chỉ biết khi thực hiện câu lệnh.
Cần thực hiện câu lệnh nhiều lần với các giá trị khác nhau.
 Các bước thực hiện:
Tham số hóa câu lệnh: ? hoặc @[tên tham số].
Tạo các parameters tương ứng cho command.
Đặt giá trị cho các parameter mỗi khi dùng command thực
hiện câu lệnh.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
21
.NET Data Provider – Parameter (cont)
 Tham số hóa
 SQL Data Provider:
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = @ten”;
cmd.CommandText =
“INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” +
“VALUES(@id, @ten, @dtb)”;
 Các provider khác:
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = ?”;
cmd.CommandText =
“INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” +
“VALUES(?, ?, ?)”;
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
22
.NET Data Provider – Parameter (cont)
 Tạo các 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);
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
23
.NET Data Provider – Parameter (cont)
Đặt giá trị cho các parameter
foreach (Student s in studentList)
{
cmd.Parameters[“@id”] = i;
cmd.Parameters[“@ten”] = s.studentName;
cmd.Parameters[“@dtb”] = s.studentMarks;
cmd.ExecuteNonQuery();
}
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
24
.NET Data Provider – DataReader
Data Source
Application
Connection
Command
BookID BookName Author
i Book i Author i

DataReader
ExecuteReader()Read()
011010011011010011
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN
25
.NET Data Provider - DataReader
 Thuộc tính và phương thức của DataReader:
HasRow: cho biết câu truy vấn có trả về dữ liệu?
Read(): đọc một mẫu tin vào DataReader.
Toán tử [ i ]: truy xuất đến cột i trong mẫu tin đọc được.
Close(): đóng DataReader.
 Lưu ý:
Truy xuất tuần tự và không quay lui.
Không cập nhật dữ liệu.
Cơ chế kết nối.

×