Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_thiet_ke_va_lap_trinh_web_2_thao_tac_csdl_voi_ado.pdf
Nội dung text: Bài giảng Thiết kế và lập trình Web 2 - Thao tác CSDL với ADO.NET
- Bài giảng môn học 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 © 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 Nội dung . Sơ lược lịch sử phát triển . Kiến trúc ADO.NET . .NET Data Provider . DataSet 2 © 2007 Khoa CNTT - ĐHKHTN
- 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 3 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET 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 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Sơ lược lịch sử phát triển . Native API DB API DB API DB API Application Database Open DataBase Connectivity DB API Driver DB API ODBC API ODBC Driver DB API Driver Application Database 5 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Sơ lược lịch sử phát triển (cont) . OLEDB và ADO Provider Provider ADO Non-Relational Data OLE DB Provider Provider Application Driver ODBC Driver Driver Relational Data 6 © 2007 Khoa CNTT - ĐHKHTN
- 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 7 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Kiến trúc ADO.NET . ADO.NET .NET Data Provider SQL Server Oracle OLE DB OLE DB Relational Data Application ADO.NET ODBC ODBC Non-Relational Data 8 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Kiến trúc ADO.NET (cont) .NET Data Provider ???Connection XML ???Command ???DataReader Data Source DataSet ???DataAdapter 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. . Cơ chế kết nối (Connected) . Cơ chế không kết nối (Disconnected) 9 © 2007 Khoa CNTT - ĐHKHTN
- 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 10 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .NET Data Provider .NET Data Provider ???Connection ???DataAdapter ???Transaction SelectCommand ???Command InsertCommand Parameters ???Parameter UpdateCommand DeleteCommand ???DataReader 11 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .NET Data Provider - Connection Connection Application Data Source . 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. 12 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Connection string (Access, SQL Server, ) . Tạo connection string Database ODBC/OLEDB Connection String Driver={Microsoft Access Driver (*.mdb)}; DBQ=ĐườngDẫnFileAccess Microsoft Access Hoặc Provider=Microsoft.Jet.OLEDB.4.0; Data Source=ĐườngDẫnFileAccess Driver={SQLServer}; Server=ServerName; Database=DatabaseName; Uid=Username; Pwd=Password; Microsoft SQL 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”)); © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET Đườ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 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .NET Data Provider - Command 011010011 Connection 011010011 Application Data Source Command 16 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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. 17 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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, „Nguyễn Văn A‟, 8.5)”; cmd.CommandType = CommandType.Text; cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); 19 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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. 20 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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(?, ?, ?)”; 21 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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); 22 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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(); } 23 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .NET Data Provider – DataReader Read()ExecuteReader() DataReader Connection 011010011011010011 Application Data Source Command BookID BookName Author i Book i Author i 24 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .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. 25 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET .NET Data Provider - DataAdapter DataAdapter SelectCommand InsertCommand DataSet UpdateCommand Data Source DeleteCommand . 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. 27 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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
- 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 29 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET DataSet DataSet là gì? Ánh xạ DataSet Data Source . 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. 30 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET DataSet (cont) DataSet Tables DataTable Columns DataColumn Rows DataRow Relations DataRelation 31 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET 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. 32 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET 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. 33 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET 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. 34 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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”] = “Nguyễn Văn A”; table.Rows.Add(row); 35 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với 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() == “Nguyễn Văn A”) row.Delete(); da.Update(ds); 37 © 2007 Khoa CNTT - ĐHKHTN
- Thiết kế và Lập trình Web 2 – Thao tác CSDL với ADO.NET 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. 38 © 2007 Khoa CNTT - ĐHKHTN