Tải bản đầy đủ (.pdf) (62 trang)

Bài giảng Lập trình Web ASP.Net với C#: Chương 7 - Th.S Phạm Đào Minh Vũ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (615.6 KB, 62 trang )

LẬP TRÌNH WEB ASP.NET VỚI C#

Giảng Viên: Th.S Phạm Đào Minh Vũ
Email:
1


Chương 7
Lập Trình Web Form Với ADO.Net
7.1 Tổng quan về ADO.Net
7.2 Các đối tượng trong ADO.Net
7.3 Xây dựng lớp xử lý dữ liệu
7.4 Xử lý giỏ hàng cho website thương mại điện tử

263
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.1. Tổng Quan Về ADO.Net
7.1.1 Giới thiệu

7.1.2 Kiến trúc ADO .Net
7.1.3 Minh họa tạo kết nối CSDL

264
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.1.1 Giới Thiệu
Hầ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
265
Khoa CNTT, Trường CĐ CNTT TP.HCM


Vấ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ữ liệu chuẩn XML (Có thể trao đổi
giữa bất kỳ hệ thống nào)

266
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.1.2 Kiến Trúc ADO.Net


MANAGED
PROVIDER

CONTENT
COMPONENT

267
Khoa CNTT, Trường CĐ CNTT TP.HCM


Kiế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.

268
Khoa CNTT, Trường CĐ CNTT TP.HCM


 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.

269
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.1.3 Minh họa tạo kết nối CSDL
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ả

270
Khoa CNTT, Trường CĐ CNTT TP.HCM


Ví dụ:
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
}
}
271
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.2. Các đối tượng trong ADO.Net
7.2.1 Connection
7.2.2 Command

272
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.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)
273
Khoa CNTT, Trường CĐ CNTT TP.HCM


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:

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

274
Khoa CNTT, Trường CĐ CNTT TP.HCM


Ví dụ: Tạo kết nối với 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();
}
}
275
Khoa CNTT, Trường CĐ CNTT TP.HCM


Nếu kết nối với CSDL 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)

276
Khoa CNTT, Trường CĐ CNTT TP.HCM


Ví dụ: Tạo kết nối với 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=MINHVU-PC\SQLEXPRESS; Initial
Catalog=QLbansach; User ID=sa;Password=;";
SqlConnection cnn = new SqlConnection(StrCnn);
cnn.Open();
//Truy xuất, xử lý dữ liệu
cnn.Close();
}
}

277
Khoa CNTT, Trường CĐ CNTT TP.HCM


Các thuộc tính Của Connection
Database: Tên CSDL
Data Source: 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ở
278
Khoa CNTT, Trường CĐ CNTT TP.HCM


Các phương thức
Change Database: 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

279
Khoa CNTT, Trường CĐ CNTT TP.HCM


7.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

280
Khoa CNTT, Trường CĐ CNTT TP.HCM



Tạo Command
Cú pháp:
<Loai Command> <Biến Command> As New <Loai Command>;
<Biến Command>.Connection=<Biến Connection >;
<Biến Command>.CommandText=Lệnh SQL>;

Hoặc
<Loai Command> <Biến Command>
As New <Loại Command>(<Lệnh SQL>);
<Biến Command>.Connection=<Biến Connection >;

281
Khoa CNTT, Trường CĐ CNTT TP.HCM


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 của table (SQLProvider không hỗ trợ)
VD:
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From Khachhang";


282
Khoa CNTT, Trường CĐ CNTT TP.HCM


VD: khai báo câu lệnh SQL trong SqlCommand
SqlCommand cmd = new SqlCommand("select * from Khachhang",cnn);

cnn : biến connection hoặc chuỗi connection string

VD: Khai báo sử dụng 1 StoredProcedure
SqlCommand cmd = new SqlCommand;
cmd.Connection = cnn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sachtheogia";

283
Khoa CNTT, Trường CĐ CNTT TP.HCM


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

284

Khoa CNTT, Trường CĐ CNTT TP.HCM


Access
OleDbParameter <tên Parameter> = new OleDbParameter();
OleDbParameter <Ten Parameter> = new

OleDbParameter (<Tên tham số>);
OleDbParameter <Tên parameter> = new
OleDbParameter (< Tên tham số >,<giá trị>);

285
Khoa CNTT, Trường CĐ CNTT TP.HCM


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ố

286
Khoa CNTT, Trường CĐ CNTT TP.HCM



×