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

