Kĩ thuật lập trình - Chương 7: Lập trình web form với ado.net

Thực hiện Command: Phương thức ExecuteReader: Trả về ñối tượng DataReader ñể ñọc dữ liệu mỗi lần một dòng với phương thức Read.(DataReader ñọc dữ liệu trực tiếp từ nguồn nên phải duy trì kết nối ñến khi ñọc xong) SqlDataReader As SqlDataReader; = .ExecuteReader; VD: SqlDataReader rd As SqlDataReader; rd = cmd.ExecuteReader; Phương thức ExcuteNoneQuery: Dùng thực thi các phát biểu T-Sql như: Insert, Update, Delete, Create, Phương thức ExcuteScalar: Trả về từ phát biểu SQL dạng Select chỉ có một cột một hàng. Written by: Dương Thành Phết htt

pdf58 trang | Chia sẻ: huyhoang44 | Lượt xem: 609 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Chương 7: Lập trình web form với ado.net, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Chương 7 Lập Trình Web Form Với ADO.Net 1. Tổng quan về ADO.Net 2. Các ñối tượng trong ADO.Net 3. Xây dựng lớp xử lý dữ liệu 4. Xử lý giỏ hàng cho website thương mại ñiện tử by: Dương Thành Phết 21. Tổng Quan Về ADO.Net 1.1 Giới thiệu by: Dương Thành Phết 1.2 Kiến trúc ADO .Net 1.3 Minh họa tạo kết nối CSDL 3Hầu hết ứng dụng windows hay website ñều cần có CSDL, ñể lưu trữ, xử lý, tìm kiếm và báo cáo Khi dữ liệu trở thành trung tâm của ứng dụng thì việc cung cấp các chức năng tới người dùng phụ thuộc vào khả năng thao tác dữ liệu, vấn ñề cần quan tâm là: Lưu dữ liệu tập trung. ðảm bảo toàn vẹn dữ liệu. ðảm bảo khả năng truy xuất ñồng thời. ðảm bảo thời gian hồi ñáp ngắn. Bảo mật dữ liệu. Trao ñổi dữ liệu giữa các hệ thống khác nhau by: Dương Thành Phết 1.1 Giới Thiệu 4Vấn ñề này ñược giải quyết dựa vào khả năng của các Hệ QTCSDL. .Net truy xuất DL qua ADO.NET, ñặc ñiểm chính của ADO.NET là:  Khả năng làm việc với DL không kết nối: DL ñược lưu trữ trong bộ nhớ như một CSDL thu nhỏ (dataset), nhằm tăng tốc ñộ xử lý tính toán và hạn chế sử dụng tài nguyên.  Khả năng xử lý dữ iệu chuẩn XML (Có thể trao ñổi giữa bất kỳ hệ thống nào) by: Dương Thành Phết 51.2 Kiến Trúc ADO.Net by: Dương Thành Phết 6Kiến trúc ADO.NET có thể chia làm 2 phần chính: Managed Provider Component: Bao gồm các ñối tượng như DataAdapter, DataReader, giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file, Content Component: Bao gồm các ñối tượng như DataSet, DataTable, ñại diện cho dữ liệu thực sự cần làm việc. by: Dương Thành Phết 7 DataReader: Là ñối tượng giúp truy cập dữ liệu nhanh chóng.  DataSet: Là một bản sao thu nhỏ của CSDL trong bộ nhớ với nhiều bảng và các mối quan hệ.  DataAdapter: Là ñối tượng kết nối giữa DataSet và CSDL, nó bao gồm 2 ñối tượng Connection và Command ñể cung cấp dữ liệu cho DataSet cũng như cập nhật dữ liệu từ DataSet xuống CSDL. by: Dương Thành Phết 81.3 Minh họa tạo kết nối CSDL by: Dương Thành Phết Cơ bản các bước thực hiện với database Bước 1: Tạo kết nối Bước 2: Mở kết nối dữ liệu Bước 3: Tạo lệnh ñiều khiển truy vấn SQL Bước 4: Thực thi lệnh Bước 5: ðóng kết nối Bước 6: in kết quả 9 by: Dương Thành Phết using System; using System.Data; using System.Data.SqlClient; public partial class vd1 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { //Khai báo và khởi tạo biến Connection SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); cnn.Open(); //Mở kết nối //Command ñiều khiển truy vấn sql SqlCommand cmd = cnn.CreateCommand(); cmd.CommandText="select TenKH from Khachhang where MaKH=5"; //lấy về chuỗi giá trị trong cơ sở dữ liệu string result = (string)cmd.ExecuteScalar(); cnn.Close(); //ñóng kết nối Response.Write(result); //in giá trị ra màn hình } } Ví dụ: 10 2. Các ñối tượng trong ADO.Net 2.1 Connection 2.2 Command by: Dương Thành Phết 11 2.1 Connection Vai trò của Connection trong ADO.net là tạo kết nối giữa ứng dụng với CSDL Data Provider System.Data.Oledb : Sử dụng với Access System.Data.SqlCient : Sử dụng với SQLServer Ứng với mỗi tên miền: System.Data.Oledb.OledbConnection System.Data.SqlClient.SqlConnection Và các Data Provider khác: System.data.OcracleClient(Ocracle) MicroSoft.data.Odbc(Thông qua ODBC của HðH) Microsoft.Data.Sqlxml (XML trên Sqlserver) by: Dương Thành Phết 12 Connection String: Khi thực hiện kết nối cần khai báo các thông tin cho Connection thông qua thuộc tính Connection String. Tùy thuộc vào Data Provider: by: Dương Thành Phết Nếu kết nối với CSDL Access Provider: Khai báo Data Provider của Access Data Source: Tên tập tin CSDL (.mdb) User ID: Tên người dùng Password : Mật khẩu 13 by: Dương Thành Phết Ví d: To k t ni vi CSDL Access using System; using System.Data; using System.Data.OleDb; public partial class VD2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb"); OleDbConnection cnn = new OleDbConnection (StrCnn); cnn.Open(); //Truy xuất, xử lý dữ liệu cnn.Close(); } } 14 by: Dương Thành Phết Nếu kết nối với CSDL SQLServer Provider: Khai báo Data Provider của SQLServer Data Source/Server: Tên Server Initial Catalog/DataBase: Tên CSDL User ID/UID: Tên người dùng Password/ PWD: Mật khẩu Integrated Security: Cơ chế chứng thực ñăng nhập true: tài khoản Windows; false: Tài khoản SqlServer (ví dụ: sa) 15 by: Dương Thành Phết Ví d: To k t ni vi CSDL SQLServer using System; using System.Data; using System.Data.sqlClient; public partial class KetnoiCSDL : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String StrCnn="Data Source=.; Initial Catalog=QLbansach; User ID=sa;Password=“; SqlConnection cnn = new SqlConnection(StrCnn); cnn.Open(); //Truy xuất, xử lý dữ liệu cnn.Close(); } } 16 Các thuộc tính Của Connection DataBase: Tên CSDL DataSource: Tên Server Provider:Tương ứng với Provider của HQTCSDL State: Tình trạng kết nối của Connection: Broken: Kết nối ñã bị ngắt khi ñã kết nối Closed: Kết nối ñã ñóng Connecting: ðang kết nối Executing: Kết nối ñang thực hiện một lệnh Fetching: Kết nối ñang truy xuất dữ liệu Open: Kết nối ñang mở by: Dương Thành Phết 17 Các phương thức Change Databse: Thay ñổi DataBase làm việc Close : ðóng kết nối Dispose: Giải phóng bộ nhớ Open: Thực hiện kết nối by: Dương Thành Phết 18 2.2 Command Sau khi tạo kết nối CSDL, mọi thao tác với nguồn dữ liệu có thể ñược thực hiện thông qua Command. Tùy theo loại Connection ñối tượng Command thuộc tên miền: System.Data.OleDb.OleDbCommand System.Data.SqlClient.SqlCommand by: Dương Thành Phết 19 Tạo Command Cú pháp: As New ; .Connection=; .CommandText=Lệnh SQL>; Hoặc As New (); .Connection=; by: Dương Thành Phết 20 Các thuộc tính Của Command CommandText: Lệnh SQL hay tên Procedure CommandType: Loại Command Text: (Mặc ñịnh): Là câu lệnh SQL StoredProcedure: Tên thủ tục TableDirect: Tên Connectionủa table VD: SqlCommand cmd As SqlCommand = New SqlCommand(); cmd.Connection = cnn; cmd.CommandType = CommandType.Text; cmd.CommandText = "Select * From Khachhang" by: Dương Thành Phết 21 Parameters  Lệnh SQL trong commandText có thể sử dụng  ? (khi sử dụng Access) @Tênbiến (khi sử dụng SQLServer) thay cho trị chưa xác ñịnh và khi thực hiện sẽ dùng ñối tượng Parameters ñể truyền giá trị vào dấu ?/ @Tênbiến.  Tùy theo Command Parameter sẽ khai báo khác nhau by: Dương Thành Phết 22 Access OleDbParameter As New OleDbParameter(); OleDbParameter As New OleDbparameter(); OleDbParameter As New OleDbParameter (,); by: Dương Thành Phết SQLServer SqlParameter As New SqlParameter(); SqlParameter As New SqlParameter(); SqlParameter As New SqlParamter(,); 23 Các thuộc tính cần chú ý: Direction: Giá trị cho biết lọai tham số Input: (mặc ñịnh) Loại tham số ñầu vào InputOutput: Loại tham số ñầu vào và ra Output: Loại tham số ñầu ra ReturnValue: Loại tham số nhận trị trả về OleDbType / SqlDbType: Kiểu dữ liệu của tham số. ParameterName: Tên tham số Value: Giá trị tham số by: Dương Thành Phết 24 VD: Khi sử dụng OleDbCommand cmd.CommandText=”Select * From KhachHang Where MaKH=?”; OleDbParameter Par As OleDbParameter= cmd.CreateParameter(); Par.Value=”KH01”; cmd.Parameters.Add(Par); VD: Khi sử dụng SqlDbCommand cmd.CommandText=”Select * From KhachHang Where MaKH=@MaKH”; SqlParameter Par As SqlParameter = cmd.CreateParameter(); Par.ParameterName=”@MaKH”; Par.Value=”KH01”; cmd.Parameters.Add(Par); by: Dương Thành Phết 25 ðưa tham số vào tập hợp Parameters VD: Khi sử dụng OleDbCommand cmd.CommandText=”Select * From BangDiem Where Masv=? And MaMH=?”; OleDbParameter Par1 As OleDbParameter= cmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4); Par1.Value=”SV01” OleDbParameter Par2 As OleDbParameter= cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4); Par2.Value=”MH01” by: Dương Thành Phết 26 VD: Khi sử dụng SqlDbCommand cmd.CommandText=”Select * From BangDiem Where Masv=@MaSV and MaMH = @MaMH ”; SqlDbParameter Par1 As SqlDbParameter= cmd.CreateParameters.Add(“@MaSV”,SqlType.Char,4); Par1.Value=”SV01” SqlDbParameter Par2 As SqlDbParameter= cmd.CreateParameters.Add(“@MaMH”,SqlType.Char,4); Par2.Value=”MH01”; by: Dương Thành Phết 27 Tạo tham số và ñưa vào tập hợp Parameters VD: Procedure SpKetQuaThi cần 2 tham số ñầu vào: @MaSV , @MaMH và trả về ðiểm thi của Môn học của sinh viên ñó. by: Dương Thành Phết 28 cmd.CommandText=”spKetQuaThi”; cmd.CommandType=CommandType.StoredProcedure; OleDbParameter ts3 As New OleDbParameter(); ts3.Direction=ParameterDirection.ReturnValue; ts3.OleDbType=OleDn.OleDbType.Int; cmd.parameters.Add(ts3); OleDbParameter ts1 as OleDbParameter= cmd.Parameters.Add(“@MaSV”,OleDbType.Char,4); Ts1.Value=”Sv01”; OleDbParameter ts2 as OleDbParameter= cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4); Ts1.Value=”MH01”; by: Dương Thành Phết 29 Thực hiện Command:  Phương thức ExecuteReader: Trả về ñối tượng DataReader ñể ñọc dữ liệu mỗi lần một dòng với phương thức Read.(DataReader ñọc dữ liệu trực tiếp từ nguồn nên phải duy trì kết nối ñến khi ñọc xong) SqlDataReader As SqlDataReader; = .ExecuteReader; VD: SqlDataReader rd As SqlDataReader; rd = cmd.ExecuteReader;  Phương thức ExcuteNoneQuery: Dùng thực thi các phát biểu T-Sql như: Insert, Update, Delete, Create,  Phương thức ExcuteScalar: Trả về từ phát biểu SQL dạng Select chỉ có một cột một hàng. by: Dương Thành Phết 30 try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; //Loại command là câu lệnh SQL cmd.CommandText = "Select Count(*) From Chude"; cmd.CommandType = CommandType.Text; //Mở kết nối và lấy dữ liệu cnn.Open(); int count = (int)cmd.ExecuteScalar(); response.write(count.ToString()); cnn.Close(); } catch (Exception) { response.write("Không thành công!“); } by: Dương Thành Phết Ví dụ 1: Sử dụng Command với câu lệnh Select 31 try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; //Biến Commnad thao tác Insert, Update, Delete cmd.CommandText = "Insert Into Chude(tencd) Values(n'văn hóa')"; cmd.CommandType = CommandType.Text; cnn.Open(); cmd.ExecuteNonQuery(); response.write("Thành công!“); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } by: Dương Thành Phết Ví dụ 2: Sử dụng Command với lệnh Insert,Update,Delete 32 by: Dương Thành Phết Ví dụ 3: Command với lệnh Insert,Update,Delete + Tham số try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; SqlParameter parTenLinhVuc = new SqlParameter("@TENCHUDE", SqlDbType.NVarChar, 50); cmd.CommandText = "INSERT INTO CHUDE VALUES(@TENCHUDE)"; cmd.CommandType = CommandType.Text; cmd.Parameters.Add(parTenchude); parTenLinhVuc.Value = TextBox1.Text; cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); response.write("Thành công!“); } catch (Exception) { response.write(“Thất bại!“); } 33 2.3 DataReader Là ñối tượng truy cập dữ liệu trực tiếp, sử dụng con trỏ phía Server và duy trì kết nối với Server trong suốt quá trình ñọc dữ liệu, Tùy theo loại Connection mà DataReader thuộc tên miền: System.Data.OleDb.OleDbDataReader System.Data.SqlClient.SqlDataReader by: Dương Thành Phết 34 Các thuộc tính  FieldCout: Số cột trên dòng hiện hành của DataReader  IsClosed : Cho biết dataReader ñã ñóng  Item:Trị của cột truyền vào. Tham số truyền vào là tên cột hoặc số thứ tự tính từ 0. by: Dương Thành Phết 35 Các phương thức  Close: ðóng DataReader  GetFieldType: Trả về kiểu dữ liệu của tham số truyền vào.  GetName: Trả về tên của cột truyền vào  GetValue: Trả về trị của cột truyền vào  Read: Di chuyển ñến dòng kế tiếp và trả về true nếu còn dòng ñể di chuyển, ngược lại trả về False. Trong khi dataReader ñang mở các thao tác dữ liệu trên nguồn dữ liệu ñều không thể cho ñến khi dataReader ñóng lại bằng lệnh Close by: Dương Thành Phết 36 by: Dương Thành Phết Ví dụ 1:DataReader với lệnh Insert,Update,Delete +Tham số try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = "SELECT * FROM Nhaxuatban"; cmd.CommandType = CommandType.Text; cnn.Open(); IDataReader dr = cmd.ExecuteReader(); String list = ""; while (dr.Read()) { list = list + dr["TenNXB"].ToString().Trim() + " "; } dr.Close(); response.write(list.ToString()); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } 37 by: Dương Thành Phết Ví dụ 2: DataReader + gọi procedure (VD: Getnhaxuatban) try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand("Getnhaxuatban", cnn); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; cnn.Open(); IDataReader dr = cmd.ExecuteReader(); String list = ""; while (dr.Read()) { list = list + dr["TenNXB"].ToString(); } dr.Close(); response.write(list.ToString()); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } 38 by: Dương Thành Phết Ví dụ 2: DataReader + gọi procedure có tham số Create Procedure GetchudeByMaCD @Machude char(15) AS Begin Select * From Chude Where MaCD=@Machude End 39 by: Dương Thành Phết try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Ctalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand("GetchudeByMaCD", cnn); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; SqlParameter parMALINHVUC = new SqlParameter("@Machude", SqlDbType.NChar, 10); parMAVHUDE.Value = TextBox1.Text; cmd.Parameters.Add(parMACHUDE); cnn.Open(); IDataReader dr = cmd.ExecuteReader(); String list = ""; while (dr.Read()) { list = list + dr["Tenchude"].ToString(); } dr.Close(); response.write(list.ToString()); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } 40 2.4 DataAdapter  ðể lấy dữ liệu từ nguồn dữ liệu về cho ứng dụng, chúng ta sử dụng ñối tượng DataAdapter. ðối tượng này cho phép ta lấy cấu trúc và dữ liệu của các bảng.  DataAdapter là một bộ gồm 4 ñối tượng:  SelectCommand: Cho phép lấy thông tin từ nguồn.  InsertCommand: Cho phép thêm dữ liệu vào bảng trong nguồn.  UpdateCommand: Cho phép ñiều chỉnh dữ liệu của bảng trong nguồn.  DeleteCommand: Cho phép xóa dữ liệu của bảng trong nguồn. by: Dương Thành Phết 41  Tạo DataAdapter Cú pháp: DataAdapter = New DataAdapter(,) by: Dương Thành Phết DataAdapter chỉ thao tác với nguồn dữ liệu qua ñối tượng connection ñang kết nối, khi Connection chưa mở thì DataAdapter sẽ tự ñộng mở kết nối khi cần và ñóng lại 42 by: Dương Thành Phết  Các thuộc tính của DataAdapter  DeleteCommand: ðối tượng Command chứa nội dung lệnh hủy các mẫu tin trên nguồn dữ liệu.  InsertCommand: ðối tượng Command chứa nội dung lệnh thêm các mẫu tin trên nguồn dữ liệu.  SelectCommand: ðối tượng Command chứa nội dung lệnh truy xuất các mẫu tin trên nguồn dữ liệu.  UpdateCommand: ðối tượng Command chứa nội dung lệnh sửa các mẫu tin trên nguồn dữ liệu. 43 by: Dương Thành Phết  Các chức năng của DataAdapter  Lấy dữ liệu từ nguồn: - DataTable: Fill() - DataSet: Fill() Dữ liệu lấy về DataSet dưới dạng các dataTable với tên là: Table0,Table1, Table2. . . - ðổ dữ liệu vào Datset cho bảng DataTable nếu chưa có sẽ tạo mới: Fill(,) 44 by: Dương Thành Phết  Phương thức trả về mẫu tin lấy ñược Dim DS as New Dataset() Dim so As Integer so= DA.Fill(DS,”Sinhvien”)  ðể cập nhật dữ liệu về nguồn Update(): Cập nhật các dòng (Các ñối tượng DataRow) vào nguồn dữ liệu. Update(): Cập nhật các thay ñổi trên tất cả các bảng của Dataset vào nguồn dữ liệu. Update(): Cập nhật tất cả các thay ñổi trên DataTable vào nguồn dữ liệu. Update(,) Cập nhật các thay ñổi trên bảng trong Dataset vào nguồn. 45 2.5 Dataset  Dataset là một mô hình CSDL quan hệ thu nhỏ ñáp ứng nhu cầu của ứng dụng.  Dataset chứa các bảng (DataTable), các quanhệ (DataRelation) và các ràng buộc (constraint)  Dataset thuộc tên miền: System.Data.Dataset.  Khai báo New System.Data.Dataset() Hoặc New System.Data.Dataset() by: Dương Thành Phết 46 by: Dương Thành Phết  Các phương thức Thêm một bảng vào Dataset Tables.Add() Một bảng mới tự ñộng ñược tạo ra với tên mặc ñịnh Table1, Table2 . . . Tables.Addd() Một bảng mới tạo ra theo ñúng Ghi chú: Tên bảng có phân biệt chữ in, thường Xóa bảng ra khỏi Dataset Tables.Remove() Xóa bảng ra khỏi tập hợp Table. 47 by: Dương Thành Phết Kiểm tra bảng có thuộc về Dataset Tables.Contains() Lấy chỉ số của bảng Tables.IndexOf() Lấy số bảng trong Dataset Tables.Count Lấy ra một bảng trong Dataset Tables() ðể cập nhật các thay ñổi trên Dataset AcceptChanges() 48 by: Dương Thành Phết ðể hủy các thay ñổi trên Dataset RejectChanges() ðể xóa bỏ mọi dữ liệu trên dataSet Clear() ðể tạo một bản sau của Dataset Clone() ðể xóa bỏ Dataset Dispone() Giải phóng mọi tài nguyên trên vùng nhớ Dataset ñang sử dụng. Tạo quan hệ giữa hai bảng trong Dataset. Relations.Add(, ) Xóa quan hệ giữa hai bảng trong Dataset. Relations.Remove() 49 2.6 DataTable Dữ liệu các bảng trong nguồn dữ liệu ñược lấy về và ñưa vào các DataTable. DataTable thuộc tên miền : System.Data.dataTable. Cú pháp: New DataTable(); New DataTable(); DataTable ñược hình thành từ DataColumn và DataRow. by: Dương Thành Phết 50 by: Dương Thành Phết try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlDataAdapter da=new SqlDataAdapter("select * from CHUDE", cnn); SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da); DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) if (row["MaCD"]=="1") { row["TENCHUDE"] = "BBB"; } response.write(ds.Tables[0].Rows[2].ItemArray[1].ToString()); GridView1.DataSource = ds.Tables[0]; GridView1.DataBind(); //Không sử dụng SqlCommandBuilder thì không thể update dữ liệu. da.Update(ds); } catch (Exception) { response.write(“Thất bại!“); } Ví dụ 1: DataAdapter + update dữ liệu 51 by: Dương Thành Phết try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlDataAdapter da = new SqlDataAdapter("GETNXB", cnn); DataSet ds = new DataSet(); da.Fill(ds); response.write(ds.Tables[0].Rows[2].ItemArray[1].ToString()); GridView2.DataSource = ds.Tables[0]; GridView2.DataBind();} catch (Exception) { response.write(“Thất bại!“); } Ví dụ 2: DataAdapter + Procedure(GetNXB) 52 by: Dương Thành Phết try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand("Getchude", cnn); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; SqlParameter parMACD = new SqlParameter("@MACD", SqlDbType.NChar, 10); parMACD.Value = "1"; cmd.Parameters.Add(parMACD); cnn.Open(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSource = ds.Tables[0]; GridView1.DataBind(); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } Ví dụ 3: DataAdapter + Procedure tham số (Getchude) 53 by: Dương Thành Phết try { SqlConnection cnn = new SqlConnection("Data Source=(local); Initial Catalog=QLbansach;User ID=sa;Password="); SqlCommand cmd = new SqlCommand("GETNXB", cnn); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; cnn.Open(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; //da.InsertCommand = cmd; //da.DeleteCommand = cmd; //da.UpdateCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSource = ds.Tables[0]; GridView1.DataBind(); cnn.Close(); } catch (Exception) { response.write(“Thất bại!“); } Ví dụ 4: DataAdapter + ðối số là command 54 2.7 ðối Tượng Transaction Dữ liệu các bảng trong nguồn dữ liệu ñược lấy về và ñưa vào các DataTable. DataTable thuộc tên miền : System.Data.dataTable. Cú pháp: New DataTable(); New DataTable(); DataTable ñược hình thành từ DataColumn và DataRow. by: Dương Thành Phết 55 3. Xây Dựng Lớp Xử Lý Dữ Liệu by: Dương Thành Phết  ðể các thao tác với CSDL thuận lợi. Ta nên xây dựng lớp xử lý dữ liệu ñảm nhận việc kết nối CSDL và các thủ tục xử lý.  Docbang(string LenhSQL): Nhằm thực hiện câu lệnh truy vấn SQL ñể trả về dữ liệu là 1 DataTable  Thuchienlenh(string LenhSQL): Nhằm thực hiện câu lệnh Insert, Update, Delete ñể cập nhật dữ liệu cho CSDL.  Thực hiện:  Tạo cấu hình chuỗi kết nối CSDL trong tập tin Webconfig. (Có thể dùng SQLDatasource ñể sinh mã) <add name="KetnoiCSDL" connectionString="Data Source =(local); Initial Catalog=QLBansach;Integrated Security=True“ providerName="System.Data.SqlClient" /> 56 by: Dương Thành Phết  Tạo mới lớp XLDL.cs: Thêm mới 1 Item Tên lớp: XLDL.cs Sẽ lưu lớp này trong thư mục App_Code 57 by: Dương Thành Phết Thực hiện mã code cho lớp XLDL.cs . . . using System.Data.SqlClient; public class XLDL { static string StrCnn = ConfigurationManager.ConnectionStrings["KetnoiCSDL"]. ConnectionString.ToString(); public static DataTable Docbang(string LenhSQL) { using (SqlConnection cnn = new SqlConnection(StrCnn)) { SqlDataAdapter bodocghi = new SqlDataAdapter(LenhSQL, cnn); DataTable bang = new DataTable(); bodocghi.Fill(bang); return bang; } } . . . 58 by: Dương Thành Phết . . . public static void thuchienlenh(string LenhSQL) { using (SqlConnection cnn = new SqlConnection(StrCnn)) { cnn.Open(); SqlCommand bolenh = new SqlCommand(LenhSQL, cnn); bolenh.ExecuteNonQuery(); cnn.Close(); } } }

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

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