Giới thiệu công nghệ ADO.NET

Giới thiệu công nghệ ADO.NET

Sơ lược lịch sử phát triển

Kiến trúc ADO.NET

Các thư viện truy xuất CSDL trong ADO.NET

 

pdf38 trang | Chia sẻ: phuongt97 | Lượt xem: 498 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Giới thiệu công nghệ ADO.NET, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Giới thiệu công nghệ ADO.NET 2 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 3 ADO OLE DB Sơ lược lịch sử phát triển Application Non-Relational Data Relational Data  OLEDB và ADO ODBC Driver Driver Driver Provider Provider Provider Provider 4 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 5 Kiến trúc ADO.NET 6 Cây phân cấp các đối tượng trong ADO.NET Kiến trúc ADO.NET 7  Connected objects: là những đối tượng giao tiếp trực tiếp với CSDL.  Disconnected objects: cho phép các user làm việc với dữ liệu dạng offline (khi đã đóng kết nối cơ sở dữ liệu) Kiến trúc ADO.NET 8 Các thư viện truy xuất CSDL trong ADO.NET  System.Data.OleDb: Access, SQL Server, Oracle  System.Data.SqlClient: SQL Server  System.Data.OracleClient: Oracle  Ghi chú:  Về mặt giao tiếp lập trình ứng dụng, cả 3 thư viện trên không khác biệt nhau nhiều.  Dùng thư viện System.Data.SqlClient sẽ truy xuất SQL Server nhanh hơn System.Data.OleDb  Dùng thư viện System.Data.OracleClient sẽ truy xuất Oracle nhanh hơn System.Data.OleDb 9 .NET Data Provider Ví dụ: OleDbConnection, SqlConnection, OracleConnection XXXConnection XXXDataAdapter XXXCommand XXXDataReader .NET Data Provider DataSet XXXParameter XXXTransaction Data Source (CSDL) 10 .NET Data Provider – Connection  Các đối tượng Connection tuân thủ IDbConnection interface.  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 11 IDbConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); cnn.Open(); // Does something here. cnn.Close(); .NET Data Provider – Connection (tt) 12 .NET Data Provider - Command Data Source Application Connection 011010011 011010011 Command 13 .NET Data Provider – xxxCommand  Các thuộc tính, phương thức thông dụng:  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. 14 IDbConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); IDbCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = “SELECT COUNT(*) FROM Orders”; cmd.CommandType = CommandType.Text; cnn.Open(); int count = (int)cmd.executeScalar(); cnn.Close(); .NET Data Provider – xxxCommand (tt) 15 IDbConnection cnn = new SqlConnection(“server=localhost; database=QLHS; user id=sa; password=sa”); IDbCommand cmd = new SqlCommand(); 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(); .NET Data Provider – xxxCommand (tt) 16 .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. 17 .NET Data Provider – Parameter(tt)  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(?, ?, ?)”; 18  Tạo các parameter cmd.Parameters.Add(“@id”, 5); cmd.Parameters.Add(“@ten”, “Nguyễn Văn A”); cmd.Parameters.Add(“@dtb”, 8.5);  Đặ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(); } .NET Data Provider – Parameter(tt) 19 .NET Data Provider – DataReader Data Source Application Connection Command BookID BookName Author i Book i Author i DataReader ExecuteReader() Read() 011010011 011010011 20  Các đối tượng DataReader tuân thủ interface IDataReader.  HasRow: cho biết còn dữ liệu để đọc nữa không.  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. .NET Data Provider – DataReader 21 SqlConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); SqlCommand cmd = new SqlCommand(); 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(); .NET Data Provider – DataReader 22 .NET Data Provider - DataAdapter SelectCommand UpdateCommand InsertCommand DeleteCommand DataAdapter Data Source DataSet  Các đối tượng DataAdapter tuân thủ interface IDbDataAdapter.  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. 23 SqlConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); SqlDataAdapter da = new SqlDataAdapter(“select * from Orders”, cnn) DataSet ds = new DataSet(); da.Fill(ds); // Does something on the DataSet. da.Update(ds); .NET Data Provider - DataAdapter 24 DataSet  Có thể nói 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ì? 25 DataSet DataSet DataTable Columns Rows DataColumn DataRow Tables Relations DataRelation 26 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. 27 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. 28 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. 29 Các bước thao tác CSDL  Bước 1: Tạo chuỗi kết nối cnStr  Bước 2: Kết nối CSDL với đối tượng XXXConnection  Bước 3: Tạo chuỗi strSQL thao tác CSDL  Bước 4: Thực thi chuỗi strSQL với đối tượng XXXCommand hoặc XXXDataAdapter  Bước 5: Đóng kết nối 30 Các phương thức thông dụng 1. LayDanhSach (kết quả trả về là một ArrayList) 2. LayBang (kết quả trả về là DataTable) 3. CapNhatBang 4. TimKiem (đối tượng theo mã) 5. Them (1 đối tượng) 6. Xoa (đối tượng theo mã) 7. Sua (1 đối tượng) 8. 31 Bước 1: Tạo chuỗi kết nối  CSharp:  Kết nối với CSDL Access: String cnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = DeAnCongTy.mdb";  Kết nối với CSDL SQL Server:  String cnStr = "Provider = Server=localhost; database=Northwind; user id=sa; password=sa"; 32  Lưu ý: khi kết nối với CSDL Access, nếu không chỉ ra đường dẫn tuyệt đối đến tập tin CSDL thì tập tin CSDL phải nằm cùng với thư mục chứa tập tin thực thi (.exe)  Còn nhiều dạng câu kết nối, như với Oracle, kết nối qua đường mạng, kết nối có bảo mật, . SV có thể tìm kiếm thêm trên Google qua các tổ hợp từ khóa: connection, string, CSharp, VB, NET, 2005, Bước 1: Tạo chuỗi kết nối 33 Bước 2: Mở kết nối với XXXConnection  CSharp: OleDbConnection cn = new OleDbConnection(cnStr); cn.Open(); 34 Bước 3: Tạo chuỗi strSQL thao tác CSDL  CSharp: String strSQL = "Select * From NhanVien";  Ghi chú:  Trong những câu SQL phức tạp có thể sẽ phải cộng thêm chuỗi hoặc thêm parameter 35 Bước 4: Thực thi chuỗi strSQL với XXXDataAdapter  CSharp: DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(strSQL, cn); da.Fill(dt); 36 Bước 4: Thực thi chuỗi strSQL với XXXCommand  CSharp: SqlCommand cmd = new SqlCommand(strSQL, cn); SqlDataReader dr = cmd.ExecuteReader();  Ghi chú:  Với những câu SQL phức tạp có thể phải khởi tạo các giá trị của các parameter trước khi thực thi chuỗi strSQL 37 Bước 5: Đóng kết nối  CSharp: cn.Close();  Thảo luận:  Có cần thiết phải mở/đóng kết nối với mỗi lần thao tác với CSDL? Chỉ mở/đóng 1 lần vào đầu/cuối chương trình?  SV tự tìm hiểu Connection Pool 38

Các file đính kèm theo tài liệu này:

  • pdfgioi_thieu_cong_nghe_ado_net.pdf
Tài liệu liên quan