Bài giảng Lập trình Website - Dương Thành Phết
ìm hiểu về ASP.Net
¾Cuối thập niên 90, ASP (Active Server Page) đã được
nhiều lập trình viên lựa chọn để xây dựng và phát triển ứng
dụng web động trên máy chủ hệ điều hành Windows.
¾ASP thể hiện những ưu điểm với mô hình lập trình thủ tục
đơn giản, sử dụng hiệu quả các đối tượng: ADO (ActiveX
Data Object) - Xử lý dữ liệu, FSO (File System Object) -
Làm việc với hệ thống tập tin ASP cũng hỗ trợ nhiều ngôn
ngữ: VBScript, JavaScript Î Được yêu thích trong thời
gian dài
¾ Tuy nhiên, ASP còn tồn đọng một số khó khăn như:
Code ASP và HTML lẫn lộn, viết code khó khăn,
Hạn chế khả năng sử dụng lại code.
Triển khai không được biên dịch dễ mất code
Hạn chế về tốc độ, quá trình Postback khó khăn,
¾ Năm 2002, Microsoft giới thiệu một kỹ thuật lập trình
Web mới là ASP.Net.
¾ Với ASP.Net, không những không cần phải biết các tag
HTML, thiết kế web, mà còn hỗ trợ mạnh lập trình hướng
đối tượng trong quá trình xây dựng và phát triển ứng dụng
Web.
¾ ASP.Net là kỹ thuật lập trình và phát triển ứng dụng web
ở phía Server dựa trên nền tảng của Microsoft .Net
Framework.
¾ Mã lệnh ở phía server sẽ được biên dịch và thi hành tại
Web Server kết quả được chuyển sang HTML/ JavaScript/
CSS và trả về cho Client.
¾Tất cả các xử lý lệnh ASP, ASP.Net đều được thực hiện
tại Server và do đó, gọi là kỹ thuật lập trình ở phía server
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Bài giảng Lập trình Website - Dương Thành Phết
”; OleDbParameter ts2 as OleDbParameter= cmd.Parameters.Add(“@MAMH”,OleDbType.Char,4); Ts1.Value=”MH01”; Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 299 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. Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 300 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!“); } Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Ví dụ 1: Sử dụng Command với câu lệnh Select Trang 50 301 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!“); } Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Ví dụ 2: Sử dụng Command với lệnh Insert,Update,Delete 302 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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!“); } 303 7.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 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 304 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. Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 305 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 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 306 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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!“); } Trang 51 307 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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!“); } 308 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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 309 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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!“); } 310 7.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. Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 311 Tạo DataAdapter Cú pháp: DataAdapter = New DataAdapter(,) Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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 312 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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. Trang 52 313 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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(,) 314 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Phương thức trả về mẫu tin lấy được Dataset DS as New Dataset() Integer so; 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. 315 7.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() Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 316 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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. 317 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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() 318 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Để 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() Trang 53 319 7.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. Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 320 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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 321 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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) 322 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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) 323 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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 324 7.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. Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Trang 54 325 7.3. Xây Dựng Lớp Xử Lý Dữ Liệu Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net Để 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" /> 326 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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 327 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net 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; } } . . . 328 Khoa CNTT, Trường CĐ CNTT TP.HCM© Dương Thành Phết-www.thayphet.net . . . public static void thuchienlenh(string LenhSQL) { using (SqlConnection cnn = new SqlConnection(StrCnn)) { cnn.Open(); SqlCommand bolenh = new SqlCommand(LenhSQL, cnn); bolenh.ExecuteNonQuery(); cnn.Close(); } } } Trang 55
File đính kèm:
- bai_giang_lap_trinh_website_duong_thanh_phet.pdf