Xem mẫu

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