Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET
Nội dung
Sơ lược lịch sử phát triển
Kiến trúc ADO.NET
.NET Data Provider
DataSet
Tóm tắt nội dung Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
alhost;
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 - ĐHKHTN16
.NET Data Provider - Command
Data SourceApplication
Connection 011010011011010011
Command
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN17
.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 - ĐHKHTN18
.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 - ĐHKHTN19
.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 - ĐHKHTN20
.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 - ĐHKHTN21
.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 - ĐHKHTN22
.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 - ĐHKHTN23
.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 SourceApplication
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 - ĐHKHTN25
.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.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN26
.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();
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN27
.NET Data Provider - DataAdapter
SelectCommand
UpdateCommand
InsertCommand
DeleteCommand
DataAdapter
Data Source
DataSet
Thuộc tính và phương thức của DataAdapter:
Fill(DataSet): dùng SelectCommand lấy dữ liệu từ Data Source
đổ vào DataSet.
Update(DataSet): dùng InsertCommand, UpdateCommand và
DeleteCommand cập nhật dữ liệu trong DataSet vào Data
Source.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN28
.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);
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN29
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 - ĐHKHTN30
DataSet
DataSet là cơ sở dữ liệu được lưu trữ trong bộ nhớ chính
(in-memory database).
Cơ chế không kết nối.
Data Source
DataSet
DataSet là gì?
Ánh xạ
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN31
DataSet
DataTable
DataSet (cont)
Columns
Rows
DataColumn
DataRow
Tables
Relations DataRelation
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN32
DataSet - DataTable
DataTable thể hiện một bảng trong cơ sở dữ liệu.
Các thuộc tính và phương thức:
TableName: tên bảng.
Columns: danh sách các cột (DataColumn).
Rows: danh sách các mẫu tin (DataRow).
PrimaryKey: danh sách các cột làm khóa chính
(DataColumn).
NewRow(): tạo một mẫu tin mới.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN33
DataSet - DataColumn
DataColumn thể hiện một cột trong bảng.
Các thuộc tính và phương thức:
ColumnName: tên cột.
DataType: kiểu dữ liệu cột.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN34
DataSet - DataRow
DataRow thể hiện một mẫu tin trong bảng.
Các thuộc tính và phương thức:
RowState: trạng thái của mẫu tin (Added, Modified, Deleted,
Unchanged, Detach).
Toán tử [ i ]: truy xuất đến cột i của mẫu tin.
Delete(): đánh dấu xóa mẫu tin.
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN35
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”] = “Nguyễn Văn A”;
table.Rows.Add(row);
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN36
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);
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN37
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() == “Nguyễn Văn A”)
row.Delete();
da.Update(ds);
Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET
© 2007 Khoa CNTT - ĐHKHTN38
DataSet (cont)
So sánh DataSet và DataReader:
Tốc độ truy xuất.
Bô nhớ lưu trữ.
Thuận tiện trong thao tác.
Cơ chế kết nối và không kết nối.
File đính kèm:
Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET.pdf

