Chương IV: ADO.NET

 ADO.NETcung cấp khả năng truy cập các nguồn dữ liệu một cách nhất quán như SQL Server, dữ liệu quản lý thông qua OLE DB và XML  ADO.NET bao gồm các trình cung cấp dữ liệu .NET (.NET data provider) cho việc kết nối đến cơ sở dữ liệu, thực thi một câu lệnh và truy xuất kết quả

pdf13 trang | Chia sẻ: lylyngoc | Lượt xem: 1611 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Chương IV: ADO.NET, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
5/10/2013 1 CHƯƠNG IV: ADO.NET 5/10/2013 1 ADO.NET  Tổng quan về ADO.NET  Tạo kết nối đến CSDL.  Các điều khiển ràng buộc danh sách(List- Bound)  Hiển thị DataSet vào điều khiển List-Bound 5/10/2013 2 TỔNG QUAN VỀ ADO.NET  ADO.NET cung cấp khả năng truy cập các nguồn dữ liệu một cách nhất quán như SQL Server, dữ liệu quản lý thông qua OLE DB và XML  ADO.NET bao gồm các trình cung cấp dữ liệu .NET (.NET data provider) cho việc kết nối đến cơ sở dữ liệu, thực thi một câu lệnh và truy xuất kết quả. 5/10/2013 3 TỔNG QUAN VỀ ADO.NET  Đối tượng ADO.NET Dataset cũng có thể được sử dụng một cách độc lập với .NET data provider để quản lý dữ liệu thuộc những ứng dụng hoặc những nguồn từ XML  Lớp ADO.NET được tìm thấy trong namespace System.Data, và được tích hợp với lớp XML được tìm thấy trong namespace System.Xml Connection 5/10/2013 4 5/10/2013 2 MôhìnhđốitượngADO.NET 5/10/2013 5 MôhìnhđốitượngADO.NET 5/10/2013 6 KHÔNG GIAN TÊN  Không gian tên sử dụng trong ADO.NET gồm:  System.Data  System.Data.Common  System.Data.SqlClient: dùng cho cơ sở dữ liệu SQL  System.Data.OleDb dùng cho cơ sở dữ liệu access 5/10/2013 7 CẤU TRÚC CỦA ADO.NET  ADO.NET Components được thiết kế để quản lý việc truy cập dữ liệu từ nguồn dữ liệu. Có 2 thành phần chính trong ADO.NET:  ADO.NET Dataset là thành phần chính của kiến trúc kết nối gián đoạn của ADO.NET. Dataset bao gồm tập hợp một hoặc nhiều đối tượng DataTable 5/10/2013 8 5/10/2013 3 CẤU TRÚC CỦA ADO.NET  NET Data Provider - một tập hợp các thành phần bao gồm các đối tượng Connection: cung cấp việc kết nối đến CSDL Command :truy cập các câu lệnh CSDL DataReader: cung cấp một luồng truy xuất DL DataAdapter: cung cấp cầu nối giữa đối tượng Dataset và CSDL. DataAdapter sử dụng đối tượng Command để thực thi các câu lệnh SQL 5/10/2013 9 CẤU TRÚC CỦA ADO.NET 5/10/2013 10 Các đối tượng trong ADO.Net Đối tượng Connection  Chức năng: Thiết lập kết nối đến cơ sở dữ liệu  Kết nối với cơ sở dữ liệu access: 5/10/2013 11 OleDbConnection con;// Khai báo String strcon; strCon ="Provider=Microsoft.Jet.OleDb.4.0;Data Source ="; strCon = strCon + Server.MapPath(".") + "\\sv.mdb"; con = new OleDbConnection(strCon); con.Open(); Kết nối với cơ sở dữ liệu Sql: 5/10/2013 12 SqlConnection con;// Khai báo String strcon; strCon= “Server=ServerName;Database=DBName;uid=userName;pwd=password”; con = new SqlConnection(strCon); con.Open(); 5/10/2013 4  Cácphươngthức:  ExecuteNonQuery():Thựcthinhữngcâulệnh  như: INSERT, UPDATE or DELETE  ExecuteScalar():Trảvềgiátrịđơntừmộttruyvấndữli ệu.  ExecuteReader():Trảvềtậprecord. 5/10/2013 13 Các phương thức của Connection  Phương thức  Open(): mở kết nối  Close(): đóng kết nối 5/10/2013 14 Các đối tượng trong ADO.Net  Đối tượng Command: thực thi câu lệnh SQL hoặc một Stored procedure  Một Data Command là một thể hiện của class OleDbCommand hoặc class SqlCommand 5/10/2013 15 Các đối tượng trong ADO.Net Các phương thức của DataCommand  Cancel(): Huỷ bỏ thực thi của một SqlCommand  CreateParameter():Tạo một thể hiện mới cho đối tượng SqlParameter. 5/10/2013 16 5/10/2013 5 Các đối tượng trong ADO.Net  ExecuteNonQuery(): Thực thi một câu lệnh T-SQL dựa vào Connection và trả về số mẫu tin bị ảnh hưởng như UPDATE, INSERT, DELETE.  ExecuteScalar(): Trả về giá trị đơn (Giá trị cụ thể như 1 table, 1 record, 1 filed …) từ một truy vấn dữ liệu.  ExecuteReader(): Gửi CommandText đến Connection và xây dựng một SqlDataReader, trả về tập các records 5/10/2013 17 Các đối tượng trong ADO.Net Các thuộc tính của Data Command  Connection: Command tham chiếu đến một connection, đối tượng này dùng để giao tiếp với cơ sở dữ liệu, nhận hay trả về SqlConnection mà command sử dụng  CommandText: nhận hoặc trả về câu lệnh T-Sql hay thủ tục để thực thi 5/10/2013 18 Các đối tượng trong ADO.Net  CommandTimeout: nhận hay trả về thời gian chờ thực thi  CommandType: nhận/ trả về giá trị cho biết loại commandtext được gán, các giá trị gồm StoredProcedure, TableDirect,Text. Mặc định là Text 5/10/2013 19 OleDbCommand cmd = new OleDbCommand(strsql,con); (với strsql là câu truy vấn cụ thể ) Các đối tượng trong ADO.Net  DataReader: được sử dụng trong những ứng dụng web với những thao tác ngắn với từng yêu cầu, thường là chỉ để hiển thị dữ liệu.  Có 2 loại DataReader: OleDbDataReader và SqlDataReader.  DataReader cung cấp cách truy xuất dữ liệu forward-only, read – only. 5/10/2013 20 5/10/2013 6 Các đối tượng trong ADO.Net  Để dùng SqlDataReader phải khai báo một SqlCommand. SqlCommand cung cấp một phương thức ExecuteReader() mà nó trả về một SqlDataReader khi thi hành một câu lệnh SQL hoặc một stored Procedure 5/10/2013 21 Các đối tượng trong ADO.Net 5/10/2013 22 OleDbCommand cmd; String strSql; strSql = "select * from tblsv"; cmd = new OleDbCommand(strSql, con); rd = cmd.ExecuteReader(); OleDbCommand cmd; String strSql; strSql = "select * from tblsv"; cmd = new OleDbCommand(); cmd.Connection = con; cmd.CommandText = strSql; rd = cmd.ExecuteReader(); Tương đương Các đối tượng trong ADO.Net 5/10/2013 23 Phương thức của DataReader Read(): Đọc tới record cuối cùng EOF. NextResult(): di chuyển tới record kế tiếp Để đọc giá trị của từng field. Sử dụng câu lệnh: DataReader rs;// Khai báo rs[“NameFiled”] or rs[index] Chú ý: Nhớ Convert về kiểu chuỗi Example: varName=Convert.ToString(rs[“Name”]) 5/10/2013 24 5/10/2013 7 Từng bước kết nối ADO.Net  Để sử dụng DataReader cần phải thực hiện các bước sau:  Tạo và mở kết nối CSDL Connection  Tạo đối tượng Command  TạoDataReader từ đối tượng Command  Gọi phương thức ExecuteReader  Sử dụng đối tượng DataReader  Đóng đối tượng DataReader  Đóng đối tượng Connection 5/10/2013 25 Từng bước kết nối trong ADO.Net 5/10/2013 26 OleDbConnection con; OleDbCommand cmd; OleDbDataReader rs; String strSQL,strCon; strCon=“Information connect to Database”; strSQL=“SQL statement”; con=new OleDbConnection(strCon); con.Open(); cmd=new OleDbCommand(strSQL); cmd.Connection=con; rs=cmd.ExecuteReader();// if strSQL is Select statement Từng bước kết nối trong ADO.Net 5/10/2013 27 Sử dụng DataReader để chứa dữ liệu truy xuất được while(rs.Read()) { //varName=rs[“FieldName”]; //process varName according to application } Example Danh Sach Khach Hang Mã khách hàng Họ tên KH098 Phan Hoai An 5/10/2013 28 Database chứa 1 table: tblCustomer(CustomerID,Name) Viết kết nối vào database và thực các công việc sau: 1) Hiển thị danh sách Customers ở dạng bảng sau: 2) Thêm 1 customer 3) Sửa đổi thông tin 1 customer 4) Xóa 1 customer 5/10/2013 8 5/10/2013 29 Answer 1) protected void Page_Load(object sender, EventArgs e) { string strconn = "server=H52PC14;"; strconn += "database=Northwind;uid=sa;pwd=;"; SqlConnection conn=new SqlConnection(strconn); string sql="SELECT EmployeeID,FirstName FROM Employees"; SqlCommand cmd=new SqlCommand(sql,conn); conn.Open(); SqlDataReader dr; dr=cmd.ExecuteReader(); while(dr.Read()) { string text=dr["FirstName"].ToString(); string value=dr["EmployeeID"].ToString(); drCategory.Items.Add(new ListItem(text,value)); } 5/10/2013 30 Answer 2) string strconn = "server=H52PC14;"; strconn += "database=Northwind;uid=sa;pwd=;"; SqlConnection conn = new SqlConnection(strconn); //string sql ="select UserID,UserName from Users"; string sql="Insert into Users(UserName,UserID,Pass) values ('miny','002','dfgg')"; //sql = sql + UserName + "'" + "," + "'" + UserID + "')"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader dr; dr = cmd.ExecuteReader(); while (dr.Read()) { ListBox1.Items.Add(dr[0].ToString()); 5/10/2013 31 Answer 3) Delete record protected void Page_Load(object sender, EventArgs e) { string strconn = "server=H52PC14;"; strconn += "database=Northwind;uid=sa;pwd=;"; SqlConnection conn = new SqlConnection(strconn); string sql = "delete from Users where UserID='01'"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); string a = cmd.ExecuteReader().ToString(); 5/10/2013 32 Answer 4) <% …. strSQL=“update set Name=‘”+varName+”’ where CustomerID=‘“+ varID +”’”; ….. cmd.ExecuteNonQuery(); %> 5/10/2013 9 Các đối tượng trong ADO.Net 5/10/2013 33 •DataTable •DataSet •DataAdapter DataTable 5/10/2013 34 •DataView •DataRowView •DataColumn •DataRow •DataTable DataTable 5/10/2013 35 •DataView DataView dv=new DataView(); Thuộc tính của DataView .Count : Trả về số records có trong the DataView .RowFilter: Thiết lập hoặc trả về giá trị lọc theo 1 hàng bất kỳ sẽ hiển thị trên DataView. .Sort: Sắp xếp thứ tự của 1 cột hay nhiều cột trong DataView. DataTable 5/10/2013 36 •DataView Ví dụ về các thuộc tính của DataView int num; num=dv.Count; dv.RowFilter=“Expression condition”; dv.RowFilter=“FieldNameColumn>=10”; dv.Sort=“List FieldName sort” ; //ASC, DESC dv.Sort=“FieldName1,FieldName2 DESC”; dv.Sort = "EMpID"; drView = dv.FindRows(EmpIDvalue); //drView is array 5/10/2013 10 DataTable 5/10/2013 37 •DataView DataView dv=new DataView() Method of DataView FindRows: Trả về 1 mảng đối tượng DataRowView mà hàng đó sẽ tìm. DataRowView[] drView; dv.Sort=“FieldName”; drView=dv.FindRows(value) // Với value: FieldName DataTable 5/10/2013 38 •DataRowView DataRowView drView=new DataRowView() drView[i] or drView[“FieldNameColumn”] : giá trị trả về String valueF; valueF=drView[“StudentID”]; Or valueF=drView[0]; DataTable  DataColumn: Trình bày lược đồ của một cột trong một DataTable. Mỗi DataColumn có một thuộc tính DataType để xác định kiểu dữ liệu được lưu trữ trong DataColumn 5/10/2013 39 DataColumn objColumn=new DataColumn(“ColumnName”); DataTable dt=new DataTable(); Dt.Columns.Add(objColumn); Đối tượng DataTable  DataRow: trình bày một dòng dữ liệu trong DataTable  Khởi tạo: 5/10/2013 40 DataRow dr=new DataRow(); dr[i] or dr[“FieldName”]: //return value 5/10/2013 11 Đối tượng DataTable  Các thuộc tính- phương thức của DataTable  .Columns: trả về các cột trong Datatable  .Columns.Count: trả về số cột trong bảng  .Columns.Add(DataColumn): Thêm cột vào bảng  .Rows :trả về các dòng, mỗi dòng là một đối tượng datarow  .Rows.Count :trả về số dòng trong bảng  .Rows.Add(DataRow):thêm một dòng vào bảng 5/10/2013 41 DataTable ColName1 ColName2 …. ColNameN Data11 Data12 … Data1N … … … … DataM1 DataM2 …. DataMN 5/10/2013 42 •DataTable: Là đối tượng để biểu diễn thông tin trong Dataset. DataColumn DataRow DataTable 5/10/2013 43 •DataTable DataTable dt=new DataTable(); .Columns:Trả về tập hợp các columns có trong table dt. .Rows: Trả về tập hợp các rows có trong table dt. dt.Columns dt.Rows Count Add(objColumn) Count Add(objRow) DataTable 5/10/2013 44 •DataTable DefaultView: 1 đối ượng DataView (Dạng hiển thị khác của DataTable) DataTable dt=new DataTable(); Phương thức DataTable NewRow():Tạo 1 dòng mới DataRow DataRow dr; dr=dt.NewRow(); 5/10/2013 12 DataSet  DataSet bao gồm tập các đối tượng DataTable mỗi DataTable điển hình tương đương với một table hoặc là một view mà ta có thể thiết lập mối quan hệ giữa chúng thông qua đối tượng DataRelation.  Dữ liệu trong DataSet có thể nhất quán bằng cách sử dụng đối tượng UniqueConstraint và ForeignKeyConstraint 5/10/2013 45 DataSet 5/10/2013 46 •DataSet DataSet ds; //Khai báo DataSet ds=new DataSet();//Khai báo và khởi tạo .Tables: trả về tất cả các Table chứa trong Dataset. ds.Tables[i] or ds.Tables[“tblName”] : Trả về đối tượng Table thứ i hoặc Table có “tên tblName Count Add(objTable)ds.Tables DataSet public DataSet Laydulieu(string sql)  {  OleDbCommand cmd;  cmd = new OleDbCommand(sql);  OleDbDataAdapter da = new OleDbDataAdapter(sql,con);  DataSet ds = new DataSet();  da.Fill(ds);  return ds; } 5/10/2013 47 DataAdapter 5/10/2013 48 •DataAdapter The DataAdapter : Là đối tượng trung gian giữa 1 DataSet và nguồn dữ liệu nhận được, dùng để lưu dữ liệu. DataAdapter.Fill(ds) : Hiển thị data lên Dataset ds OleDbDataAdapter class. OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); (với cmd: OleDbCommand (Đã có)) 5/10/2013 13 Example 5/10/2013 49 OleDbDataAdapter da; da=new OleDbDataAdapter(strSQL,con); DataSet ds=new DataSet(“tblA”); da.Fill(ds); DataTable dt; dt=ds.Tables[“tblA”]; //ds.Tables[0] foreach(DataRow dr in dt.Rows) { varName1= Convert.ToString(dr[“StudentID”]); varName2= Convert.ToString(dr[“Name”]); //process varName1, varName2 } Khai báo chuỗi kết nối trong file Web.Config: 5/10/2013 50 <add key="ConnectionString" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source =HOADON.mdb"/> Database được lưu trong thư mục gốc trong Visual Studio.Net: C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\HOADON.mdb Truy xuất chuỗi kết nối tại trang bất kỳ 5/10/2013 51 string strcon; strcon=ConfigurationManager.AppSettings["ConnectionString"]; con= new OleDbConnection(strcon); con.ConnectionString=strcon; con.Open();
Tài liệu liên quan