SlideShare a Scribd company logo
LẤY DỮ LIỆU
THEO CÁCH CONNECTED
Chương 2
2
Nội dung
 Các bước lấy dữ liệu
 Lấy 1 giá trị đơn
 Lấy tập giá trị
 Truy vấn tập giá trị và lưu lại
 Truy vấn có tham số
 Gọi Store Procedure
3
4
5
6
Các bước lấy dữ liệu
 3 bước cơ bản
• Bước 1: Chỉ rõ dữ liệu mà ứng dụng cần
– Viết yêu cầu bằng câu lệnh SQL
– SQL:
 Select
 DML, DDL, DCL
• Bước 2: Gởi yêu cầu đến CSDL
– Tạo đối tượng Command
• Bước 3: Nhận kết quả
7
Lấy 1 giá trị đơn
 Một số câu lệnh SQL trả về giá trị đơn
 Tạo đối tượng Command
 Cung cấp văn bản câu lệnh SQL cho Command
 Thực thi câu lệnh
8
Lấy 1 giá trị đơn
Một số câu lệnh SQL trả về giá trị đơn
 Select min(…) From …
 Select max(…) From …
 Select avg(…) From …
 Select count(…) From …
 Select sum(…) From …
string strSQL =
"Select count(*)
From TenBang";
9
Lấy 1 giá trị đơn
Tạo đối tượng Command
 Một đối tượng Command cần 3 thông tin
• Đối tượng Connection
• Văn bản câu lệnh SQL
• Loại câu lệnh: CommadType
– Lấy dữ liệu nguyên 1 Bảng: CommadType.TableDirect
– Câu lệnh SQL: CommadType.Text
– Stored Procedure: CommadType.StoredProcedure
10
Lấy 1 giá trị đơn
Tạo đối tượng Command
 Cách 1:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
 Cách 2:
SqlCommand cmd = new SqlCommand(strSQL);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
11
Lấy 1 giá trị đơn
Tạo đối tượng Command
 Cách 3:
SqlCommand cmd = new SqlCommand(strSQL, conn);
cmd.CommandType = CommandType.Text;
 Cách 4:
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
12
Lấy 1 giá trị đơn
Thực thi câu lệnh
 Phương thức ExecuteScalar()
• ExecuteScalar trả về 1 giá trị kiểu object
• Dùng ép kiểu để chuyển sang kiểu dữ liệu
tương ứng
 Chú ý: Phải mở kết nối trước khi gọi lệnh
ExecuteScalar
conn.Open();
kq = (Kieu)cmd.ExecuteScalar();
conn.Close();
13
Lấy tập giá trị
 Câu lệnh SQL trả về tập giá trị
 Thực thi câu lệnh
 Đối tượng IDataReader
 Thuộc tính và phương thức của IDataReader
14
Lấy tập giá trị
Câu lệnh SQL trả về tập giá trị
 Tập giá trị: Gồm nhiều dòng hoặc nhiều cột
 Select cột1, cột2, … From …
string strSQL =
"Select cot1, …
From TenBang";
15
Lấy tập giá trị
Thực thi câu lệnh
 Phương thức ExecuteReader()
• ExecuteScalar trả về 1 đối tượng IDataReader
(SqlDataReader hay OleDBDataReader)
• IDataReader cho phép chúng ta duyệt qua các
dòng trong tập dữ liệu
 Chú ý:
• Phải mở kết nối trước khi gọi lệnh ExecuteReader
• Không được đóng kết nối khi còn đang sử dụng đối
tượng IDataReader
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
…
conn.Close();
16
Lấy tập giá trị
Đối tượng IDataReader
 Đặc điểm của đối tượng IDataReader
• Chứa một luồng dữ liệu, tại mỗi thời điểm chỉ
truy cập 1 dòng
• Read-only, Forward-only
17
Lấy tập giá trị
Thuộc tính và phương thức của IDataReader
 Get[DataType](int i): GetInt32(…), GetString(…), …
• Tên đầy đủ: phụ thuộc vào kiểu dữ liệu cần lấy
• Tham số của hàm: là số thứ tự của cột (Ordinal) muốn
lấy dữ liệu
 string GetName(int i)
• Lấy tên cột có số thứ tự i
 int GetOrdinal(string name)
• Lấy số thứ tự của cột có tên name
 bool IsDbNull(int i)
• Kiểm tra giá trị cột I có là null/nothing hay không
18
Lấy tập giá trị
Thuộc tính và phương thức của IDataReader
 object GetValue(int i)
• Lấy giá trị cột I mà không quan tâm kiểu dữ liệu
 Hai indexer có chức năng tương tự phương
thức GetValue
• object dataReader[int i]
• object dataReader[string name]
 Chú ý: Nên dùng số thứ tự thay vì tên cột
19
Lấy tập giá trị
Thuộc tính và phương thức của IDataReader
 bool HasRow
• true: cho biết IDataReader chứa 1 hay nhiều
dòng dữ liệu
 bool Read()
• Đọc dòng kế tiếp
• Trả về true nếu còn 1 hay nhiều dòng dữ liệu
20
Lấy tập giá trị
Thuộc tính và phương thức của IDataReader
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
if (!reader.HasRows)
…
while (reader.Read())
{
value1 = reader.GetString(0);
value2 = reader.GetInt32(1);
}
conn.Close();
21
Truy vấn tập giá trị và lưu lại
 Điều kiện lưu dữ liệu vào bộ nhớ
• Trong một số trường hợp cần lưu dữ liệu
– Data-binding
– Cần nhiều thời gian để xử lý dữ liệu
Cần lưu dữ liệu lại để xử lý sau
22
Truy vấn tập giá trị và lưu lại
 Dùng vòng lặp foreach
• Để lặp qua các dòng dữ liệu
• Mỗi dòng dữ liệu được gọi là DbDataRecord
List<NhanVien> nhanVienList = new List<NhanVien>();
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
foreach (DbDataRecord rec in reader)
{
nhanVienList.Add(new NhanVien(rec));
}
conn.Close();
//Sử dụng nhanVienList
…
23
TRUY VẤN CÓ THAM SỐ
24
Nhu cầu cần có truy vấn có tham số
 Chúng ta thường viết các câu lệnh SQL đề tìm
kiếm các dòng dữ liệu trong CSDL theo một điều
kiện nào đó. Những giá trị trong điều kiện do
người dùng nhập vào
 Ví dụ: Tìm kiếm nhân viên có trong CSDL không
để cho phép đăng nhập vào chương trình
string strUser, strPass;
strUser = txtUser.Text;
strPass = txtPass.Text;
string strSQL;
strSQL = "select * from NhanVien where " +
"username='" + strUser + "' and " +
"password='" + strPass + "'";
25
Nhu cầu cần có truy vấn có tham số
 Nhận xét
• Bất kỳ những gì nhập vào txtPass, txtUser đều
được đặt vào trong câu SQL
• Hãy nhập vào username: ' or ('1'='1') or '1'='1 hay
• Hãy nhập vào password: ' or '1'='1
26
Nhu cầu cần có truy vấn có tham số
 Truy vấn có tham số
• Những nơi trong câu SQL cần dữ liệu người
dùng, chúng ta sẽ tạo những tham số tại
những nơi đó (gọi là parameter placeholders)
• Bất kỳ dữ liệu gì được truyền vào tham số sẽ
được đối xử như là dữ liệu thuần túy (không
phải là 1 câu lệnh SQL)
27
Các bước tạo truy vấn có tham số
 3 bước tạo truy vấn có tham số
• Bước 1: Xây dựng văn bản câu SQL có tham số
• Bước 2: Khai báo đối tượng SqlParameter, gán
giá trị tương ứng
• Bước 3: Gán đối tượng SqlParameter cho thuộc
tính Parameters của đối tượng SqlCommand
28
Các bước tạo truy vấn có tham số
 Bước 1:Xây dựng văn bản câu SQL có tham số
• Những nơi cần dữ liệu người dùng chúng ta tạo
một parameter placeholder
• Tên parameter placeholder: @ten
strSQL = "select … where cot1 = @ten1 …"
 Ví dụ:
 Cú pháp:
strSQL = "select * from NhanVien where " +
“manv=@user and matkhau=@pass";
Parameter
placeholder
29
Các bước tạo truy vấn có tham số
 Bước 2: Khai báo đối tượng SqlParameter,
gán giá trị tương ứng
• Mỗi parameter placeholder tương ứng với một
đối tượng SqlParameter
SqlParameter param;
param = new SqlParameter();
param = new SqlParameter(string paramName, object value);
param = new SqlParameter(string paramName, SqlDbType dbType);
param = new SqlParameter(string paramName, SqlDbType dbType, int size);
 Cú pháp:
30
Các bước tạo truy vấn có tham số
 Một số loại kiểu dữ liệu của tham số: SqlDbType
• Số
– TinyInt = Byte
– SmallInt = Int16
– Int = Int32
– BigInt = Int64
– Real = Single
– Float = Double
– Decimal = Decimal
– Money = Decimal
• Chuỗi
– Char = String
– NChar = String
– Text = String
– NText = String
– NVarChar = String
• Kiểu khác
– Bit = Boolean
– DateTime = DateTime
31
Các bước tạo truy vấn có tham số
 Một số property của SqlParameter
• string param.ParameterName
• SqlDbType param.SqlDbType
• object param.Value
• int param.Size
32
Các bước tạo truy vấn có tham số
 Ví dụ
SqlParameter paramMaNV, paramMatKhau;
paramMaNV = new SqlParameter();
paramMaNV.SqlDbType = SqlDbType.VarChar;
paramMaNV.ParameterName = "@user";
paramMaNV.Value = strMaNV;
paramMatKhau = new SqlParameter();
paramMatKhau.SqlDbType = SqlDbType.VarChar;
paramMatKhau.ParameterName = "@pass";
paramMatKhau.Value = strMatKhau;
33
Các bước tạo truy vấn có tham số
 Bước 3: Gán đối tượng SqlParameter cho
thuộc tính Parameters của đối tượng
SqlCommand
SqlCommand cmd;
SqlParameter param;
…
cmd.Parameters.Add(param);
cmd.Parameters.Add(string paramName, SqlDbType dbType);
cmd.Parameters.Add(string paramName, SqlDbType dbType, int size);
34
GỌI STORED PROCEDURE
35
Gọi Stored Procedure
Khái niệm Stored Procedure
 Định nghĩa Stored Procedure – SP:
• SP là 1 thủ tục được định nghĩa trước và
được lưu trữ trong CSDL để người dùng sẵn
sàng dùng
 Đặc điểm của SP
• SQL Server biên dịch Stored Procedure
• Gọi SP chạy sẽ nhanh hơn việc xây dựng câu
truy vấn trong code
• SP bảo mật hơn
36
Gọi Stored Procedure
Tạo Stored Procedure – SP
 Cú pháp tạo SP
CREATE PROCEDURE usp_TenSP
/*
(
@parameter1 datatype = defaultvalue,
@parameter2 datatype OUTPUT
)
*/
AS
/* SET NOCOUNT ON */
RETURN
37
Gọi Stored Procedure
Gọi SP không có tham số
 2 bước gọi SP không tham số:
• Bước 1: Chỉ rõ tên SP trong thuộc tính
CommandText của đối tượng Command
SqlCommand cmd;
…
cmd.CommandText = “usp_TenStoredProcedure”
• Bước 2: Chỉ cho đối tượng Command biết
chúng ta đang muốn thực thi 1 Stored
Procedure
cmd.CommandType = CommandType.StoredProcedure
38
Gọi Stored Procedure
Gọi SP không có tham số
 Ví dụ: create procedure usp_LayDSNhanVien
as
select * from NhanVien
return
string strSP = “usp_LayDSNhanVien”;
SqlCommand cmd = new SqlCommand(strSP, conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter daNhanVien = new SqlDataAdapter(cmd);
DataTable dtNhanVien = new DataTable();
daNhanVien.Fill(dtNhanVien);
// Cách 2
//conn.Open();
//SqlDataReader dr = cmd.ExecuteReader();
39
Gọi Stored Procedure
Gọi SP có tham số input (vào)
 3 bước gọi SP có tham số input:
• Bước 1, 2: giống như trước
• Bước 3: Thêm đối tượng tham số
SqlParameter vào đối tượng command (Tên
tham số giống tên tham số trong SP)
cmd.Parameters.Add(“@TenThamSo”, kieu, kichthuoc);
cmd.Parameters[“@TenThamSo”].value = giatri;
40
Gọi Stored Procedure
Gọi SP có tham số input (vào)
 Ví dụ:
string sqlSP = "usp_TimNhanVienTheoTen";
conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sqlSP, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Ten", SqlDbType.NVarChar, 20);
cmd.Parameters["@Ten"].Value=giatri;
create procedure usp_TimNhanVienTheoTen
(@ten nvarchar(20))
as
select * from NhanVien
where ten = @ten
return
41
Gọi Stored Procedure
Gọi SP có tham số output (ra)
 Tương tự SP có tham số input
• Nhưng bước 3 phải chỉ rõ tham số nào là
output bằng thuộc tính Direction của đối tượng
SqlParameter
SqlParameter param;
…
param.Direction = ParameterDirection.Output
42
Gọi Stored Procedure
Gọi SP có tham số output (ra)
 Ví dụ:
create procedure usp_TimTenNhanVienTheoMa
(@manv nvarchar(20), @ten nvarchar(20) output)
as
select @ten=ten
from NhanVien
where manv=@manv
return
43
Gọi Stored Procedure
Gọi SP có tham số output (ra)
string sqlSP = "usp_TimTenNhanVienTheoMa";
conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sqlSP, conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramTen = new SqlParameter();
paramTen.Direction = ParameterDirection.Output;
paramTen.ParameterName ="@ten";
paramTen.SqlDbType = SqlDbType.NVarChar;
paramTen.Size = 20;
cmd.Parameters.Add(paramTen);
cmd.Parameters.Add("@MaNV", SqlDbType.NVarChar, 20);
cmd.Parameters["@MaNV"].Value = "NV001";
conn.Open();
cmd.ExecuteReader();
conn.Close();
string ten = cmd.Parameters["@ten"].Value.ToString();
44
Tóm tắt chương 2

More Related Content

What's hot

Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
MasterCode.vn
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
Tráng Hà Viết
 
Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quát
Tráng Hà Viết
 
LINQ
LINQLINQ
5.cach su dung data reader
5.cach su dung data reader5.cach su dung data reader
5.cach su dung data readerDao Uit
 
Oop unit 08 đa hình
Oop unit 08 đa hìnhOop unit 08 đa hình
Oop unit 08 đa hình
Tráng Hà Viết
 
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKALựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Ho Quang Thanh
 
P05 delegate & event 2009
P05 delegate & event 2009P05 delegate & event 2009
P05 delegate & event 2009Hà Ngọc
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
hoangnguyentien
 
Cập nhật csdl ngay trên datagridview trong vb
Cập nhật csdl ngay trên datagridview trong vbCập nhật csdl ngay trên datagridview trong vb
Cập nhật csdl ngay trên datagridview trong vbANHMATTROI
 
Oop unit 05 một số kỹ thuật java nâng cao
Oop unit 05 một số kỹ thuật java nâng caoOop unit 05 một số kỹ thuật java nâng cao
Oop unit 05 một số kỹ thuật java nâng cao
Tráng Hà Viết
 
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
huynhtrong774129
 

What's hot (13)

Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
 
Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quát
 
Cach su dung data reader
Cach su dung data readerCach su dung data reader
Cach su dung data reader
 
LINQ
LINQLINQ
LINQ
 
5.cach su dung data reader
5.cach su dung data reader5.cach su dung data reader
5.cach su dung data reader
 
Oop unit 08 đa hình
Oop unit 08 đa hìnhOop unit 08 đa hình
Oop unit 08 đa hình
 
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKALựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
 
P05 delegate & event 2009
P05 delegate & event 2009P05 delegate & event 2009
P05 delegate & event 2009
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
Cập nhật csdl ngay trên datagridview trong vb
Cập nhật csdl ngay trên datagridview trong vbCập nhật csdl ngay trên datagridview trong vb
Cập nhật csdl ngay trên datagridview trong vb
 
Oop unit 05 một số kỹ thuật java nâng cao
Oop unit 05 một số kỹ thuật java nâng caoOop unit 05 một số kỹ thuật java nâng cao
Oop unit 05 một số kỹ thuật java nâng cao
 
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
 

Similar to 02 chuong2-laydulieutheocachconnected-140404114611-phpapp02

04 chuong4-capnhatdulieu-140404115156-phpapp02
04 chuong4-capnhatdulieu-140404115156-phpapp0204 chuong4-capnhatdulieu-140404115156-phpapp02
04 chuong4-capnhatdulieu-140404115156-phpapp02
huynhtrong774129
 
04 chuong 4 - cap nhat du lieu
04   chuong 4 - cap nhat du lieu04   chuong 4 - cap nhat du lieu
04 chuong 4 - cap nhat du lieu
truong le hung
 
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
MasterCode.vn
 
Data provider
Data providerData provider
Data provider
ngocminh1984
 
7 stl c++
7   stl c++7   stl c++
7 stl c++qnv95
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
MasterCode.vn
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Dũng Đinh
 
Chuong 07_ gắng kết dữ liệu asp.net
Chuong 07_ gắng kết dữ liệu asp.netChuong 07_ gắng kết dữ liệu asp.net
Chuong 07_ gắng kết dữ liệu asp.net
ThuyNguyenThi25
 
04 ado
04 ado04 ado
04 ado
hao191999
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content Provider
Phuoc Nguyen
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7Hoang le Minh
 
Python Beginner Class day-07-08-module
Python Beginner Class day-07-08-modulePython Beginner Class day-07-08-module
Python Beginner Class day-07-08-module
Khánh Nguyễn
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
ThuyKhoaCNTTNguyenTh
 
Tổng hợp nè
Tổng hợp nèTổng hợp nè
Tổng hợp nè
Nguyễn Hiền
 
01 chuong1-gioithieuado-140404114504-phpapp01
01 chuong1-gioithieuado-140404114504-phpapp0101 chuong1-gioithieuado-140404114504-phpapp01
01 chuong1-gioithieuado-140404114504-phpapp01
huynhtrong774129
 
Asp
AspAsp
Asp
thinhtu
 

Similar to 02 chuong2-laydulieutheocachconnected-140404114611-phpapp02 (20)

04 chuong4-capnhatdulieu-140404115156-phpapp02
04 chuong4-capnhatdulieu-140404115156-phpapp0204 chuong4-capnhatdulieu-140404115156-phpapp02
04 chuong4-capnhatdulieu-140404115156-phpapp02
 
04 chuong 4 - cap nhat du lieu
04   chuong 4 - cap nhat du lieu04   chuong 4 - cap nhat du lieu
04 chuong 4 - cap nhat du lieu
 
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
 
C# co ban 10
C# co ban 10C# co ban 10
C# co ban 10
 
Data provider
Data providerData provider
Data provider
 
7 stl c++
7   stl c++7   stl c++
7 stl c++
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
 
Ung dung web chuong 7
Ung dung web  chuong 7Ung dung web  chuong 7
Ung dung web chuong 7
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1
 
7 stl c++
7   stl c++7   stl c++
7 stl c++
 
Chuong 07_ gắng kết dữ liệu asp.net
Chuong 07_ gắng kết dữ liệu asp.netChuong 07_ gắng kết dữ liệu asp.net
Chuong 07_ gắng kết dữ liệu asp.net
 
04 ado
04 ado04 ado
04 ado
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content Provider
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7
 
Python Beginner Class day-07-08-module
Python Beginner Class day-07-08-modulePython Beginner Class day-07-08-module
Python Beginner Class day-07-08-module
 
Ch06
Ch06Ch06
Ch06
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
 
Tổng hợp nè
Tổng hợp nèTổng hợp nè
Tổng hợp nè
 
01 chuong1-gioithieuado-140404114504-phpapp01
01 chuong1-gioithieuado-140404114504-phpapp0101 chuong1-gioithieuado-140404114504-phpapp01
01 chuong1-gioithieuado-140404114504-phpapp01
 
Asp
AspAsp
Asp
 

More from huynhtrong774129

1.SoạnThaoVanBan_Word.pptx
1.SoạnThaoVanBan_Word.pptx1.SoạnThaoVanBan_Word.pptx
1.SoạnThaoVanBan_Word.pptx
huynhtrong774129
 
3.BangTinh_Excel.pptx
3.BangTinh_Excel.pptx3.BangTinh_Excel.pptx
3.BangTinh_Excel.pptx
huynhtrong774129
 
C3.Excel.ppt
C3.Excel.pptC3.Excel.ppt
C3.Excel.ppt
huynhtrong774129
 
04 chuong4-databinding-140404115313-phpapp02
04 chuong4-databinding-140404115313-phpapp0204 chuong4-databinding-140404115313-phpapp02
04 chuong4-databinding-140404115313-phpapp02
huynhtrong774129
 
04.report 120625040327-phpapp02
04.report 120625040327-phpapp0204.report 120625040327-phpapp02
04.report 120625040327-phpapp02
huynhtrong774129
 
03 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp0203 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp02
huynhtrong774129
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02
huynhtrong774129
 

More from huynhtrong774129 (7)

1.SoạnThaoVanBan_Word.pptx
1.SoạnThaoVanBan_Word.pptx1.SoạnThaoVanBan_Word.pptx
1.SoạnThaoVanBan_Word.pptx
 
3.BangTinh_Excel.pptx
3.BangTinh_Excel.pptx3.BangTinh_Excel.pptx
3.BangTinh_Excel.pptx
 
C3.Excel.ppt
C3.Excel.pptC3.Excel.ppt
C3.Excel.ppt
 
04 chuong4-databinding-140404115313-phpapp02
04 chuong4-databinding-140404115313-phpapp0204 chuong4-databinding-140404115313-phpapp02
04 chuong4-databinding-140404115313-phpapp02
 
04.report 120625040327-phpapp02
04.report 120625040327-phpapp0204.report 120625040327-phpapp02
04.report 120625040327-phpapp02
 
03 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp0203 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp02
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02
 

Recently uploaded

DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdfDANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
thanhluan21
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
Nguyen Thanh Tu Collection
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
Nguyen Thanh Tu Collection
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
hieutrinhvan27052005
 
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docxVăn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
metamngoc123
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
QucHHunhnh
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
HiYnThTh
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
NamNguynHi23
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
Nguyen Thanh Tu Collection
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
my21xn0084
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
khanhthy3000
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
AnhPhm265031
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
duyanh05052004
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
HngL891608
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
lamluanvan.net Viết thuê luận văn
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
SmartBiz
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Man_Ebook
 

Recently uploaded (17)

DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdfDANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
 
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docxVăn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
 

02 chuong2-laydulieutheocachconnected-140404114611-phpapp02

  • 1. LẤY DỮ LIỆU THEO CÁCH CONNECTED Chương 2
  • 2. 2 Nội dung  Các bước lấy dữ liệu  Lấy 1 giá trị đơn  Lấy tập giá trị  Truy vấn tập giá trị và lưu lại  Truy vấn có tham số  Gọi Store Procedure
  • 3. 3
  • 4. 4
  • 5. 5
  • 6. 6 Các bước lấy dữ liệu  3 bước cơ bản • Bước 1: Chỉ rõ dữ liệu mà ứng dụng cần – Viết yêu cầu bằng câu lệnh SQL – SQL:  Select  DML, DDL, DCL • Bước 2: Gởi yêu cầu đến CSDL – Tạo đối tượng Command • Bước 3: Nhận kết quả
  • 7. 7 Lấy 1 giá trị đơn  Một số câu lệnh SQL trả về giá trị đơn  Tạo đối tượng Command  Cung cấp văn bản câu lệnh SQL cho Command  Thực thi câu lệnh
  • 8. 8 Lấy 1 giá trị đơn Một số câu lệnh SQL trả về giá trị đơn  Select min(…) From …  Select max(…) From …  Select avg(…) From …  Select count(…) From …  Select sum(…) From … string strSQL = "Select count(*) From TenBang";
  • 9. 9 Lấy 1 giá trị đơn Tạo đối tượng Command  Một đối tượng Command cần 3 thông tin • Đối tượng Connection • Văn bản câu lệnh SQL • Loại câu lệnh: CommadType – Lấy dữ liệu nguyên 1 Bảng: CommadType.TableDirect – Câu lệnh SQL: CommadType.Text – Stored Procedure: CommadType.StoredProcedure
  • 10. 10 Lấy 1 giá trị đơn Tạo đối tượng Command  Cách 1: SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = strSQL; cmd.CommandType = CommandType.Text;  Cách 2: SqlCommand cmd = new SqlCommand(strSQL); cmd.Connection = conn; cmd.CommandType = CommandType.Text;
  • 11. 11 Lấy 1 giá trị đơn Tạo đối tượng Command  Cách 3: SqlCommand cmd = new SqlCommand(strSQL, conn); cmd.CommandType = CommandType.Text;  Cách 4: SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = strSQL; cmd.CommandType = CommandType.Text;
  • 12. 12 Lấy 1 giá trị đơn Thực thi câu lệnh  Phương thức ExecuteScalar() • ExecuteScalar trả về 1 giá trị kiểu object • Dùng ép kiểu để chuyển sang kiểu dữ liệu tương ứng  Chú ý: Phải mở kết nối trước khi gọi lệnh ExecuteScalar conn.Open(); kq = (Kieu)cmd.ExecuteScalar(); conn.Close();
  • 13. 13 Lấy tập giá trị  Câu lệnh SQL trả về tập giá trị  Thực thi câu lệnh  Đối tượng IDataReader  Thuộc tính và phương thức của IDataReader
  • 14. 14 Lấy tập giá trị Câu lệnh SQL trả về tập giá trị  Tập giá trị: Gồm nhiều dòng hoặc nhiều cột  Select cột1, cột2, … From … string strSQL = "Select cot1, … From TenBang";
  • 15. 15 Lấy tập giá trị Thực thi câu lệnh  Phương thức ExecuteReader() • ExecuteScalar trả về 1 đối tượng IDataReader (SqlDataReader hay OleDBDataReader) • IDataReader cho phép chúng ta duyệt qua các dòng trong tập dữ liệu  Chú ý: • Phải mở kết nối trước khi gọi lệnh ExecuteReader • Không được đóng kết nối khi còn đang sử dụng đối tượng IDataReader conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); … conn.Close();
  • 16. 16 Lấy tập giá trị Đối tượng IDataReader  Đặc điểm của đối tượng IDataReader • Chứa một luồng dữ liệu, tại mỗi thời điểm chỉ truy cập 1 dòng • Read-only, Forward-only
  • 17. 17 Lấy tập giá trị Thuộc tính và phương thức của IDataReader  Get[DataType](int i): GetInt32(…), GetString(…), … • Tên đầy đủ: phụ thuộc vào kiểu dữ liệu cần lấy • Tham số của hàm: là số thứ tự của cột (Ordinal) muốn lấy dữ liệu  string GetName(int i) • Lấy tên cột có số thứ tự i  int GetOrdinal(string name) • Lấy số thứ tự của cột có tên name  bool IsDbNull(int i) • Kiểm tra giá trị cột I có là null/nothing hay không
  • 18. 18 Lấy tập giá trị Thuộc tính và phương thức của IDataReader  object GetValue(int i) • Lấy giá trị cột I mà không quan tâm kiểu dữ liệu  Hai indexer có chức năng tương tự phương thức GetValue • object dataReader[int i] • object dataReader[string name]  Chú ý: Nên dùng số thứ tự thay vì tên cột
  • 19. 19 Lấy tập giá trị Thuộc tính và phương thức của IDataReader  bool HasRow • true: cho biết IDataReader chứa 1 hay nhiều dòng dữ liệu  bool Read() • Đọc dòng kế tiếp • Trả về true nếu còn 1 hay nhiều dòng dữ liệu
  • 20. 20 Lấy tập giá trị Thuộc tính và phương thức của IDataReader conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); if (!reader.HasRows) … while (reader.Read()) { value1 = reader.GetString(0); value2 = reader.GetInt32(1); } conn.Close();
  • 21. 21 Truy vấn tập giá trị và lưu lại  Điều kiện lưu dữ liệu vào bộ nhớ • Trong một số trường hợp cần lưu dữ liệu – Data-binding – Cần nhiều thời gian để xử lý dữ liệu Cần lưu dữ liệu lại để xử lý sau
  • 22. 22 Truy vấn tập giá trị và lưu lại  Dùng vòng lặp foreach • Để lặp qua các dòng dữ liệu • Mỗi dòng dữ liệu được gọi là DbDataRecord List<NhanVien> nhanVienList = new List<NhanVien>(); conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); foreach (DbDataRecord rec in reader) { nhanVienList.Add(new NhanVien(rec)); } conn.Close(); //Sử dụng nhanVienList …
  • 23. 23 TRUY VẤN CÓ THAM SỐ
  • 24. 24 Nhu cầu cần có truy vấn có tham số  Chúng ta thường viết các câu lệnh SQL đề tìm kiếm các dòng dữ liệu trong CSDL theo một điều kiện nào đó. Những giá trị trong điều kiện do người dùng nhập vào  Ví dụ: Tìm kiếm nhân viên có trong CSDL không để cho phép đăng nhập vào chương trình string strUser, strPass; strUser = txtUser.Text; strPass = txtPass.Text; string strSQL; strSQL = "select * from NhanVien where " + "username='" + strUser + "' and " + "password='" + strPass + "'";
  • 25. 25 Nhu cầu cần có truy vấn có tham số  Nhận xét • Bất kỳ những gì nhập vào txtPass, txtUser đều được đặt vào trong câu SQL • Hãy nhập vào username: ' or ('1'='1') or '1'='1 hay • Hãy nhập vào password: ' or '1'='1
  • 26. 26 Nhu cầu cần có truy vấn có tham số  Truy vấn có tham số • Những nơi trong câu SQL cần dữ liệu người dùng, chúng ta sẽ tạo những tham số tại những nơi đó (gọi là parameter placeholders) • Bất kỳ dữ liệu gì được truyền vào tham số sẽ được đối xử như là dữ liệu thuần túy (không phải là 1 câu lệnh SQL)
  • 27. 27 Các bước tạo truy vấn có tham số  3 bước tạo truy vấn có tham số • Bước 1: Xây dựng văn bản câu SQL có tham số • Bước 2: Khai báo đối tượng SqlParameter, gán giá trị tương ứng • Bước 3: Gán đối tượng SqlParameter cho thuộc tính Parameters của đối tượng SqlCommand
  • 28. 28 Các bước tạo truy vấn có tham số  Bước 1:Xây dựng văn bản câu SQL có tham số • Những nơi cần dữ liệu người dùng chúng ta tạo một parameter placeholder • Tên parameter placeholder: @ten strSQL = "select … where cot1 = @ten1 …"  Ví dụ:  Cú pháp: strSQL = "select * from NhanVien where " + “manv=@user and matkhau=@pass"; Parameter placeholder
  • 29. 29 Các bước tạo truy vấn có tham số  Bước 2: Khai báo đối tượng SqlParameter, gán giá trị tương ứng • Mỗi parameter placeholder tương ứng với một đối tượng SqlParameter SqlParameter param; param = new SqlParameter(); param = new SqlParameter(string paramName, object value); param = new SqlParameter(string paramName, SqlDbType dbType); param = new SqlParameter(string paramName, SqlDbType dbType, int size);  Cú pháp:
  • 30. 30 Các bước tạo truy vấn có tham số  Một số loại kiểu dữ liệu của tham số: SqlDbType • Số – TinyInt = Byte – SmallInt = Int16 – Int = Int32 – BigInt = Int64 – Real = Single – Float = Double – Decimal = Decimal – Money = Decimal • Chuỗi – Char = String – NChar = String – Text = String – NText = String – NVarChar = String • Kiểu khác – Bit = Boolean – DateTime = DateTime
  • 31. 31 Các bước tạo truy vấn có tham số  Một số property của SqlParameter • string param.ParameterName • SqlDbType param.SqlDbType • object param.Value • int param.Size
  • 32. 32 Các bước tạo truy vấn có tham số  Ví dụ SqlParameter paramMaNV, paramMatKhau; paramMaNV = new SqlParameter(); paramMaNV.SqlDbType = SqlDbType.VarChar; paramMaNV.ParameterName = "@user"; paramMaNV.Value = strMaNV; paramMatKhau = new SqlParameter(); paramMatKhau.SqlDbType = SqlDbType.VarChar; paramMatKhau.ParameterName = "@pass"; paramMatKhau.Value = strMatKhau;
  • 33. 33 Các bước tạo truy vấn có tham số  Bước 3: Gán đối tượng SqlParameter cho thuộc tính Parameters của đối tượng SqlCommand SqlCommand cmd; SqlParameter param; … cmd.Parameters.Add(param); cmd.Parameters.Add(string paramName, SqlDbType dbType); cmd.Parameters.Add(string paramName, SqlDbType dbType, int size);
  • 35. 35 Gọi Stored Procedure Khái niệm Stored Procedure  Định nghĩa Stored Procedure – SP: • SP là 1 thủ tục được định nghĩa trước và được lưu trữ trong CSDL để người dùng sẵn sàng dùng  Đặc điểm của SP • SQL Server biên dịch Stored Procedure • Gọi SP chạy sẽ nhanh hơn việc xây dựng câu truy vấn trong code • SP bảo mật hơn
  • 36. 36 Gọi Stored Procedure Tạo Stored Procedure – SP  Cú pháp tạo SP CREATE PROCEDURE usp_TenSP /* ( @parameter1 datatype = defaultvalue, @parameter2 datatype OUTPUT ) */ AS /* SET NOCOUNT ON */ RETURN
  • 37. 37 Gọi Stored Procedure Gọi SP không có tham số  2 bước gọi SP không tham số: • Bước 1: Chỉ rõ tên SP trong thuộc tính CommandText của đối tượng Command SqlCommand cmd; … cmd.CommandText = “usp_TenStoredProcedure” • Bước 2: Chỉ cho đối tượng Command biết chúng ta đang muốn thực thi 1 Stored Procedure cmd.CommandType = CommandType.StoredProcedure
  • 38. 38 Gọi Stored Procedure Gọi SP không có tham số  Ví dụ: create procedure usp_LayDSNhanVien as select * from NhanVien return string strSP = “usp_LayDSNhanVien”; SqlCommand cmd = new SqlCommand(strSP, conn); cmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter daNhanVien = new SqlDataAdapter(cmd); DataTable dtNhanVien = new DataTable(); daNhanVien.Fill(dtNhanVien); // Cách 2 //conn.Open(); //SqlDataReader dr = cmd.ExecuteReader();
  • 39. 39 Gọi Stored Procedure Gọi SP có tham số input (vào)  3 bước gọi SP có tham số input: • Bước 1, 2: giống như trước • Bước 3: Thêm đối tượng tham số SqlParameter vào đối tượng command (Tên tham số giống tên tham số trong SP) cmd.Parameters.Add(“@TenThamSo”, kieu, kichthuoc); cmd.Parameters[“@TenThamSo”].value = giatri;
  • 40. 40 Gọi Stored Procedure Gọi SP có tham số input (vào)  Ví dụ: string sqlSP = "usp_TimNhanVienTheoTen"; conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(sqlSP, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@Ten", SqlDbType.NVarChar, 20); cmd.Parameters["@Ten"].Value=giatri; create procedure usp_TimNhanVienTheoTen (@ten nvarchar(20)) as select * from NhanVien where ten = @ten return
  • 41. 41 Gọi Stored Procedure Gọi SP có tham số output (ra)  Tương tự SP có tham số input • Nhưng bước 3 phải chỉ rõ tham số nào là output bằng thuộc tính Direction của đối tượng SqlParameter SqlParameter param; … param.Direction = ParameterDirection.Output
  • 42. 42 Gọi Stored Procedure Gọi SP có tham số output (ra)  Ví dụ: create procedure usp_TimTenNhanVienTheoMa (@manv nvarchar(20), @ten nvarchar(20) output) as select @ten=ten from NhanVien where manv=@manv return
  • 43. 43 Gọi Stored Procedure Gọi SP có tham số output (ra) string sqlSP = "usp_TimTenNhanVienTheoMa"; conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(sqlSP, conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter paramTen = new SqlParameter(); paramTen.Direction = ParameterDirection.Output; paramTen.ParameterName ="@ten"; paramTen.SqlDbType = SqlDbType.NVarChar; paramTen.Size = 20; cmd.Parameters.Add(paramTen); cmd.Parameters.Add("@MaNV", SqlDbType.NVarChar, 20); cmd.Parameters["@MaNV"].Value = "NV001"; conn.Open(); cmd.ExecuteReader(); conn.Close(); string ten = cmd.Parameters["@ten"].Value.ToString();

Editor's Notes

  1. Data Manipulation Language Data Definition Language
  2. Kiem tra xem select khóa chinh có tra ve 1 giá trị hay không Select 1cot From bang Where cot_khoa_chinh = giaitr Select 1cot From bang Where cot_duynhat = giaitr
  3. OleDbCommand1.CommandText = &amp;quot;authors&amp;quot;; OleDbCommand1.CommandType = CommandType.TableDirect; OleDbConnection1.Open(); dreader = OleDbCommand1.ExecuteReader();
  4. Truy cập theo so thu tu se nhanh hon ten cot
  5. Truy cập theo so thu tu se nhanh hon ten cot Dinh dang dữ liệu String.Format(“{0} {1}”, …);
  6. using System.Data.Common;
  7. BigIntInt64. A 64-bit signed integer. BinaryArray of type Byte. A fixed-length stream of binary data ranging between 1 and 8,000 bytes. BitBoolean. An unsigned numeric value that can be 0, 1, or nullNothingnullptra null reference (Nothing in Visual Basic). CharString. A fixed-length stream of non-Unicode characters ranging between 1 and 8,000 characters. DateTimeDateTime. Date and time data ranging in value from January 1, 1753 to December 31, 9999 to an accuracy of 3.33 milliseconds. DecimalDecimal. A fixed precision and scale numeric value between -10 38 -1 and 10 38 -1. FloatDouble. A floating point number within the range of -1.79E +308 through 1.79E +308. ImageArray of type Byte. A variable-length stream of binary data ranging from 0 to 2 31 -1 (or 2,147,483,647) bytes. IntInt32. A 32-bit signed integer. MoneyDecimal. A currency value ranging from -2 63 (or -9,223,372,036,854,775,808) to 2 63 -1 (or +9,223,372,036,854,775,807) with an accuracy to a ten-thousandth of a currency unit. NCharString. A fixed-length stream of Unicode characters ranging between 1 and 4,000 characters. NTextString. A variable-length stream of Unicode data with a maximum length of 2 30 - 1 (or 1,073,741,823) characters. NVarCharString. A variable-length stream of Unicode characters ranging between 1 and 4,000 characters. Implicit conversion fails if the string is greater than 4,000 characters. Explicitly set the object when working with strings longer than 4,000 characters. RealSingle. A floating point number within the range of -3.40E +38 through 3.40E +38. UniqueIdentifierGuid. A globally unique identifier (or GUID). SmallDateTimeDateTime. Date and time data ranging in value from January 1, 1900 to June 6, 2079 to an accuracy of one minute. SmallIntInt16. A 16-bit signed integer. SmallMoneyDecimal. A currency value ranging from -214,748.3648 to +214,748.3647 with an accuracy to a ten-thousandth of a currency unit. TextString. A variable-length stream of non-Unicode data with a maximum length of 2 31 -1 (or 2,147,483,647) characters. TimestampArray of type Byte. Automatically generated binary numbers, which are guaranteed to be unique within a database. timestamp is used typically as a mechanism for version-stamping table rows. The storage size is 8 bytes. TinyIntByte. An 8-bit unsigned integer. VarBinaryArray of type Byte. A variable-length stream of binary data ranging between 1 and 8,000 bytes. Implicit conversion fails if the byte array is greater than 8,000 bytes. Explicitly set the object when working with byte arrays larger than 8,000 bytes. VarCharString. A variable-length stream of non-Unicode characters ranging between 1 and 8,000 characters. VariantObject. A special data type that can contain numeric, string, binary, or date data as well as the SQL Server values Empty and Null, which is assumed if no other type is declared. XmlAn XML value. Obtain the XML as a string using the GetValue method or Value property, or as an XmlReader by calling the CreateReader method. UdtA SQL Server 2005 user-defined type (UDT). StructuredA special data type for specifying structured data contained in table-valued parameters. DateDate data ranging in value from January 1,1 AD through December 31, 9999 AD. TimeTime data based on a 24-hour clock. Time value range is 00:00:00 through 23:59:59.9999999 with an accuracy of 100 nanoseconds. DateTime2Date and time data. Date value range is from January 1,1 AD through December 31, 9999 AD. Time value range is 00:00:00 through 23:59:59.9999999 with an accuracy of 100 nanoseconds. DateTimeOffsetDate and time data with time zone awareness. Date value range is from January 1,1 AD through December 31, 9999 AD. Time value range is 00:00:00 through 23:59:59.9999999 with an accuracy of 100 nanoseconds. Time zone value range is -14:00 through +14:00.
  8. Ten sp ko phan biet chu hoa hay chu thuong