Tải bản đầy đủ (.pptx) (20 trang)

Bài giảng Lập trình trên Windows: Chương 5.1 - Trần Minh Thái

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 (97.4 KB, 20 trang )

Lập trình Windows
Chương 5.1. Lấy dữ liệu theo cách Connected

1


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

2


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

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

3



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 câu lệnh SQL cho Command
• Thực thi câu lệnh

4


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

5


Lấy 1 giá trị đơn
Tạo đối tượng Command
Đối tượng Command gồm:
• Đối tượng Connection

• 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

6


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;

7


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;

8


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

conn.Open();
kq = (Kieu)cmd.ExecuteScalar();
conn.Close();

9


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

10


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

11


Lấy tập giá trị
Thực thi câu lệnh
• Phương thức ExecuteReader() trả về 1 đối tượng IDataReader
(SqlDataReader hay OleDBDataReader)
• IDataReader cho phép duyệt các dịng trong tập dữ liệu
!!! 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();

12


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

13


Lấy tập giá trị
Thuộc tính và phương thức của IDataReader
• Get[DataType](int i): GetInt32(…), GetString(…), …
• DataType: phụ thuộc vào kiểu dữ liệu cần lấy
• i: 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


14


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

!!! Nên dùng số thứ tự (i) thay vì tên cột (columnName)

15


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

16



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

17


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

18


Truy vấn tập giá trị và lưu lại

Mỗi dòng là DbDataRecord
ArrayList arrList = new ArrayList();
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
foreach (DbDataRecord rec in reader)
{
arrList.Add(rec);
}
conn.Close();
//Sử dụng arrList

19


Q&A

20 20



×