1. Trang chủ
  2. » Công Nghệ Thông Tin

chương 2 lấy dữ liệu theo cách connected

44 439 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 2 Lấy Dữ Liệu Theo Cách Connected
Định dạng
Số trang 44
Dung lượng 571,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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: Co

Trang 1

LẤY DỮ LIỆU THEO CÁCH CONNECTED

Chương 2

Trang 2

Nội dung

 Các bước lấy dữ liệu

 Lấy 1 giá trị đơn

Trang 3

3

Trang 6

Các bước lấy dữ liệu

• 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ả

Trang 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

Trang 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";

Trang 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

Trang 10

Lấy 1 giá trị đơn

Tạo đối tượng Command

Trang 11

Lấy 1 giá trị đơn

Tạo đối tượng Command

Trang 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

Trang 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

Trang 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();

Trang 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

Trang 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

Trang 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]

Trang 20

value1 = reader.GetString(0);

value2 = reader.GetInt32(1);

} conn.Close();

Trang 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

Trang 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> ();

Trang 23

23TRUY VẤN CÓ THAM SỐ

Trang 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;

Trang 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

Trang 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)

Trang 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

Trang 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:

Parameter placeholder

Trang 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:

Trang 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

Trang 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

Trang 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;

Trang 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

cmd.Parameters.Add( string paramName, SqlDbType dbType);

cmd.Parameters.Add( string paramName, SqlDbType dbType, int size);

Trang 34

GỌI STORED PROCEDURE

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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;

Trang 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;

create procedure usp_TimNhanVienTheoTen

(@ten nvarchar (20))

as

select * from NhanVien

where ten = @ten return

Trang 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

Trang 42

Gọi Stored Procedure

Gọi SP có tham số output (ra)

 Ví dụ:

create procedure usp_TimTenNhanVienTheoMa

(@manv nvarcha r(20), @ten nvarchar (20) output )

Trang 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;

Trang 44

Tóm tắt chương 2

Ngày đăng: 28/05/2014, 17:58

TỪ KHÓA LIÊN QUAN