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

pdf38 trang | Chuyên mục: Mạng Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 1820 | Lượt tải: 2download
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:

  • pdfBài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET.pdf
Tài liệu liên quan