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
58 trang |
Chia sẻ: huyhoang44 | Lượt xem: 698 | Lượt tải: 0
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 kt 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 kt 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:
- 08_chuong07_6218.pdf