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

Bài giảng Lập trình C: Phần 2 ĐH Phạm Văn Đồng

48 57 0

Đ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

Định dạng
Số trang 48
Dung lượng 812,52 KB

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

Nội dung

(NB) Bài giảng Lập trình C: Phần 2 được biên soạn nhằm cung cấp cho các bạn những kiến thức về Quản lý dữ liệu với Microsoft SQL Serve, Truy cập cơ sở dữ liệu với ADO.NET, Report và đóng gói ứng dụng.

Trang 1

Trang 56

Chương 4:

Quản lý dữ liệu với Microsoft SQL Server

Thời lượng: 8 tiết Mục tiêu:

- Hiểu được các đối tượng trong hệ quản trị CSDL Microsoft SQL Server,

- Viết được các câu lệnh SQL theo yêu cầu,

- Tạo, quản lý được một CSDL trong Microsoft SQL Server theo yêu cầu

4.1 Các khái niệm về cơ sở dữ liệu trong MS SQL Server

4.1.1 Các khái niệm về cơ sở dữ liệu

a) Cơ sở dữ liệu:

Một cơ sở dữ liệu (CSDL - Database) là một <tập hợp các dữ liệu> <có

liên quan với nhau> được lưu trữ trong máy tính theo một quy định nhất định nhằm phục vụ cho <một mục đích quản lý> nào đó

Ví dụ: CSDL phục vụ cho việc quản lý các chuyến bay của một hãng hàng không cung cấp các thông tin vế số hiệu chuyến bay, nơi xuất phát, nơi đến, số chỗ ngồi, ngày bay của tất cả các chuyến bay trong năm; CSDL phục vụ cho công tác quản lý đào tạo trong trường chứa các dữ liệu phản ánh thông tin

về học sinh, giáo viên, môn học, phòng học,

b) Hệ quản trị cơ sở dữ liệu:

Một hệ quản trị cơ sở dữ liệu (HQT CSDL - Database Management

System) là phần mềm cho phép người dùng <tạo, lưu trữ> và <quản lý> cơ sở

dữ liệu Đồng thời HQT CSDL cung cấp một môi trường thuận lợi cho việc

<khai thác> thông tin được lưu trữ trong cơ sở dữ liệu

Một số hệ quản trị cơ sở dữ liệu: Microsoft (MS) Visual Foxpro, MS Access, MS SQL Server, DB2, Oracle,

c) Hệ cơ sở dữ liệu:

Một hệ cơ sở dữ liệu (Database System) là một hệ thống phần mềm nhằm

quản lý CSDL của một hệ thống thông tin cụ thể nào đó

Như vậy các thành phần bên trong một hệ CSDL gồm có: chương trình, CSDL, HQT CSDL Để vận hành hệ CSDL cần có một số lượng con người

d) Mô hình dữ liệu:

Nền tảng của cấu trúc cơ sở dữ liệu là mô hình dữ liệu Mô hình dữ liệu

Trang 2

Trang 57

được định nghĩa là một sưu tập các công cụ khái niệm dùng cho việc mô tả dữ liệu, các mối quan hệ dữ liệu, các ngữ nghĩa dữ liệu và các ràng buộc dữ liệu Các mô hình dữ liệu phổ biến là: mạng, phân cấp, quan hệ, ER, hướng đối tượng

e) Mô hình dữ liệu quan hệ:

Mô hình dữ liệu quan hệ là mô hình dữ liệu trong đó tất cả dữ liệu được tổ chức trong các bảng (Table) có mối quan hệ với nhau Mỗi bảng bao gồm các cột (Field – trường, thuộc tính), các dòng (Record – bản ghi, bộ)

4.1.2 Khái niệm về cơ sở dữ liệu trong MS SQL Server

MS SQL Server là HQT CSDL được phát triển để tạo và quản lý CSDL quan hệ Một CSDL trong MS SQL Server chứa các đối tượng: Tables, Views, Procedures,… Tables trong MS SQL Server gồm các Table có quan hệ với nhau Sau đây sẽ trình bày các khái niệm liên quan đến Tables

b) Khóa chính của bảng (Primary Key):

Mỗi bảng phải có một cột (hoặc tập các cột) mà giá trị của nó xác định duy nhất định duy nhất một dòng trong tập hợp các dòng của bảng Cột đó (tập các cột đó) được chọn làm khóa chính

c) Mối quan hệ (Relationship):

Mối quan hệ của bảng được thể hiện thông qua sự ràng buộc giá trị dữ liệu xuất hiện trong bảng này phải có xuất hiện trong bảng kia MS SQL Server chỉ hỗ trợ mối quan hệ 1-1 và 1-n

d) Khóa ngoài (Foreign Key):

Một cột (hoặc một tập các cột) trong một bảng mà giá trị của nó được xác định từ khóa chính của một bảng khác được gọi là khóa ngoài

4.2 Ngôn ngữ SQL

SQL (Structured Query Language) là ngôn ngữ được sử dụng cho các HQT CSDL Ngôn ngữ SQL chuẩn được đưa ra bởi ANSI (Amerrican National Standards Institude) và ISO (International Standards Organnization) với phiên bản mới nhất hiện nay là phiên bản SQL-92 (phiên bản được đưa ra vào năm 1992) Mặc dù có nhiều ngôn ngữ khác nhau được đưa ra cho các HQT CSDL

Trang 3

Trang 58

quan hệ, SQL vẫn là ngôn ngữ được sử dụng rộng rãi hiện nay trong nhiều hệ thống CSDL thương mại như: Oracle, SQL Server, DB2, Microsoft Access, … Thông qua SQL, người sử dụng có thể dễ dàng định nghĩa được dữ liệu, thao tác với dữ liệu, … Mặt khác, đây là ngôn ngữ có tính khai báo nên nó dễ sử dụng và cũng vì vậy mà trở nên phổ biến

4.2.1 Các câu lệnh SQL

a) Thao tác dữ liệu

TRUNCATE Xóa toàn bộ dữ liệu trong bảng

b) Định nghĩa dữ liệu

CREATE TABLE Tạo bảng

ALTER TABLE Sửa cấu trúc bảng

CREATE FUNCTION Tạo hàm (do người sử dụng định nghĩa)

ALTER FUNCTION Sửa đổi hàm

DROP FUNCTION Xóa hàm

CREATE TRIGGER Tạo trigger

ALTER TRIGGER Sửa trigger

DROP TRIGGER Xóa trigger

4.2.2 Kiểu dữ liệu

Trang 4

Trang 59

CHAR (n) Kiểu chuỗi với độ dài cố định

NCHAR (n) Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE VARCHAR (n) Kiểu chuỗi với độ dài chính xác

NVARCHAR (n) Kiểu chuỗi với độ dài chính xác hỗ trợ UNICODE INTEGER Số nguyên có giá trị từ -231

đến 231 - 1

TINYTINT Số nguyên có giá trị từ 0 đến 255

SMALLINT Số nguyên có giá trị từ -215

đến 215 – 1 BIGINT Số nguyên có giá trị từ -263

đến 263 – 1 NUMERIC (p,s) Kiểu số với độ chính xác cố định

DECIMAL (p,s) Tương tự kiểu Numeric

FLOAT Số thực có giá trị từ -1.79E+308 đến 1.79E+308 REAL Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38

BIT Kiểu bit (có giá trị 0 hoặc 1)

DATETIME Kiểu ngày giờ (chính xác đến phần trăm của giây) SMALLDATETIME Kiểu ngày giờ (chính xác đến phút)

BINARY Dữ liệu nhị phân với độ dài cố định (tối đa 8000

bytes)

VARBINARY Dữ liệu nhị phân với độ dài chính xác (tối đa 8000

bytes) IMAGE Dữ liệu nhị phân với độ dài chính xác (<=

Trang 5

Trang 60

2,147,483,647 bytes)

TEXT Dữ liệu kiếu chuỗi với độ dài lớn (tối đa

2,147,483,647 ký tự)

NTEXT Dữ liệu kiếu chuỗi với độ dài lớn và hỗ trợ

UNICODE (tối đa 1,073,741,823 ký tự)

Trang 6

[^] : Ký tự bất kỳ không nằm trong giới hạn được chỉ định

4.2.4 Một số hàm thường dùng

a) Ngày (Date: ngày/tháng/năm):

GetDate() Lấy ngày hiện tại

Day(Date) Lấy ngày trong tháng của một ngày

Month(Date) Lấy tháng trong năm của một ngày

Year(Date) Lấy năm của một ngày

b) Chuỗi (string: chuỗi; m, n: độ dài):

Left(string, n) Trích từ chuỗi string n ký tự từ trái sang

Right(string, n) Trích từ chuỗi string n ký tự từ phải sang

Substring(string, m, n) Trích từ chuỗi string n ký tự từ vị trí m

Ltrim(string) Cắt bỏ khoảng trắng thừa bên trái chuỗi string Rtrim(string) Cắt bỏ khoảng trắng thừa bên phải chuỗi string Len(string) Độ dài chuỗi string

Trang 7

INSERT INTO <tên bảng>

VALUES (danh sách giá trị)

Ví dụ: Bổ sung thêm một sinh viên vào bảng SINHVIEN:

INSERT INTO [SINHVIEN]

VALUES („SV010‟, ‟Nguyễn Văn A‟, ‟12/02/1992‟, ‟Sơn Tịnh‟, ‟L1001‟)

Trong trường hợp chỉ bổ sung dữ liệu cho một số trường, ta phải chỉ định tên trường sau tên bảng:

INSERT INTO <tên bảng>(danh sách trường)

VALUES (danh sách giá trị)

Ví dụ: Bổ sung thêm một sinh viên vào bảng SINHVIEN:

INSERT INTO [SINHVIEN]([masv], [tensv],

magvcn

SINHVIEN

# masv tensv ngaysinh quequan malop

Trang 8

Trang 63

[,…,<tên cột n> = <biểu thức n>]

[FROM <danh sách bảng>]

[WHERE <điều kiện>]

Ví dụ: Sửa lại quê quán của sinh viên có mã là “SV011” thành “Bình Sơn”:

[WHERE <điều kiện>]

Ví dụ: Xóa các sinh viên có mã là “SV011”:

DELETE FROM [SINHVIEN]

[WHERE <điều kiện>]

[GROUP BY <danh sách trường kết quả>

[HAVING <điều kiện>]]

[ORDER BY <danh sách trường kết quả >]

Trong đó:

- Mệnh đề SELECT: danh sách trường gồm: tên các trường trong các bảng trong mệnh đề FROM, tên các trường mới, … Giá trị của trường mới có thể được tạo thành bằng các biểu thức, hàm được xây dựng sẵn

- Mệnh đề FROM: danh sách các bảng là tên các bảng Có thể dùng bí danh (As) cho bảng

- Mệnh đề WHERE: điều kiện lọc

- Mệnh đề GROUP BY: dùng để nhóm các bảng ghi theo một số trường nào đó Kết quả có thể được lọc bởi mệnh đề HAVING BY

Trang 9

Trang 64

- Mệnh đề ORDER BY: sắp xếp kết quả theo các trường

Ví dụ: Câu lệnh lấy danh sách magv, tengv của các giáo viên:

Ví dụ: Câu lệnh lấy danh sách tenlop, “số sinh viên của lớp” của tất cả các lớp sắp xếp theo tên lớp:

SELECT [tenlop],count([masv]) As CountOfmasv

FROM [LOP] INNER JOIN [SINHVIEN] ON

Trang 10

4.3 Câu hỏi và bài tập

1) Tạo CSDL trên Server

2) Viết các câu lệnh SQL phục vụ cho việc quản lý bảng LOP

3) Viết các câu lệnh SQL phục vụ cho việc quản lý bảng SINHVIEN 4) Viết các thủ tục lưu trữ phục vụ cho việc quản lý bảng LOP

5) Viết các thủ tục lưu trữ phục vụ cho việc quản lý bảng SINHVIEN 6) Viết các lệnh SQL nhằm:

- Kiểm tra sự tồn tại của một CSDL đã có trên MS SQL Server

- Thêm Một CSDL mới

- Thêm các bảng LOP, SINHVIEN và các quan hệ lên CSDL

7) Hãy cho biết các lợi ích của thủ tục lưu trữ

Trang 11

Trang 66

- Nhập dữ liệu:

- Tạo khung nhìn có tên là View_TKGT để thống kê số lượng sinh viên của các lớp theo giới tính:

CREATE VIEW View_TKGT AS

SELECT malop, SUM(CASE gioitinh WHEN 1 THEN 1 ELSE 0 END) AS

„Nam‟, SUM(CASE gioitinh WHEN 0 THEN 1 ELSE 0 END) AS „Nữ‟ FROM SINHVIEN

GROUP BY malop

Go

- Tạo hàm người dùng có tên là Fun_LayTT để lấy thông tin của một sinh viên phục vụ cho việc in giấy xác nhận phục vụ mục đích tạm hoãn nghĩa vụ quân sự với tham số vào là mã sinh viên và với các tham số ra là họ tên, ngày sinh, giới tính, lớp, khoa, năm học hiện tại, năm bắt đầu, năm kết thúc khóa học

CREATE FUNCTION Fun_LayTT (@masv nvarchar(12))

RETURNS TABLE

AS

RETURN

Select hodem+' '+ten As hotensv,ngaysinh,case gioitinh when

1 then 'Nam' else N'Nữ' end As phai, LOP.malop, tenkhoa,namht, khoa,khoa+sonam As namkt from LOP Inner Join SINHVIEN on

Lop.malop=SINHVIEN.malop Where masv=@masv

Go

Trang 12

Trang 67

Chương 5:

Truy cập cơ sở dữ liệu với ADO.NET

Thời lượng: 12 tiết Mục tiêu:

- Hiểu vai trò, chức năng của các đối tượng hỗ trợ truy cập CSDL,

- Hiểu được cách truy cập dữ liệu với đối tượng Command,

- Hiểu được cách truy cập dữ liệu với mô hình CSDL ảo,

- Buộc được dữ liệu đơn giản, phức tạp,

- Viết được chương trình truy cập CSDL đơn giản

5.1 Mô hình kết nối và truy cập dữ liệu với ADO.NET

5.1.1 Mô hình kết nối và truy cập dữ liệu tổng quát

Hình 5-1 mô tả đơn giản kiến trúc tổng quát của ADO.NET Các đối tượng trong kiến trúc này đều thuộc không gian tên System.Data Sau đây là ý nghĩa của các đối tượng:

Connection để kết nối đến một CSDL

Transaction hỗ trợ giao tác trong truy cập dữ liệu

Command thực hiện các câu lệnh SQL

DeleteCommand thực hiện câu lệnh xóa

UpdateCommand thực hiện câu lệnh sửa

InsertCommand thực hiện câu lệnh chèn

SelectCommand thực hiện câu lệnh lấy dữ liệu

DataReader đọc dữ liệu từng dòng một

DataAdapter hỗ trợ DataSet đồng bộ dữ liệu với

CSDL qua các câu lệnh SQL DataSet CSDL ảo trên ứng dụng

DataTable bảng trong DataSet

Trang 13

ConnectionString tên chuỗi kết nối Một chuỗi kết nối có các thông tin: tên

HQT CSDL, tên máy chủ, tên CSDL, tên đăng nhập, mật

Trang 14

5.1.3 Kết nối đến cơ sở dữ liệu

Việc kết nối đến CSDL dựa trên mô hình Client - Server CSDL được trên Server và chương trình ứng dụng được đặt ở máy người dùng (Client) Quy trình

để một Client kết nối đến Server được thực hiện theo các bước sau:

- Client gửi chuỗi kết nối chứa các thông tin về Client và CSDL muốn kết nối đến Server

- Server kiểm tra thông tin:

+ Nếu hợp lệ thì cho phép Client quyền truy cập CSDL tương ứng Việc truy cập cũng được thực hiện bằng các câu lệnh SQL

+ Nếu không hợp lệ thì không cấp quyền truy cập

Để truy cập đến một CSDL ta thực hiện theo các bước:

Bước 1: tạo đối tượng Connection

- Xác định chuỗi kết nối đến CSDL cần truy cập Giả sử biến được đặt tên

là ChuoiKetNoi

ChuoiKetNoi = @"Data Source=XP-VANTOAN\SQLEXPRESS;Initial Catalog=QLSV;Integrated Security=True";

- Tạo đối tượng Connection Giả sử biến được đặt tên là KN Như vậy, ta

có thể tạo đối tượng Connection như sau

SqlConnection KN = new SqlConnection(ChuoiKetNoi);

Bước 2: truy cập dữ liệu

Để truy cập dữ liệu với CSDL MS SQL Server ta thực hiện theo trình tự:

Trang 15

Phương thức KiemTraKN() sẽ trả về true khi kết nối thành công, ngược

lại thì kết nối không thành công

Người ta thường xây dựng thuộc tính Connection để lấy đối tượng Connection cụ thể làm nhiệm vụ kết nối Trong các thao tác cập nhật dữ liệu, đối tượng làm nhiệm vụ kết nối được sử dụng thường xuyên nên thuộc tính này là rất hữu ích

5.1.4 Transaction

Là lớp hỗ trợ quản lý theo giao tác trong việc cập nhật dữ liệu Nếu không

sử dụng giao tác, một thao tác cập nhật (thêm, xóa, sửa) sẽ làm thay đổi dữ liệu thật sự Còn khi sử dụng giao tác, ta có thể sử dụng một số thao tác cập nhật dữ liệu thì dữ liệu cũng thay đổi nhưng chưa có hiệu lực thực sự cho đến chấp nhận hoặc hủy bỏ giao tác Nếu chập nhận giao tác thì các thao tác cập nhật dữ liệu trong giao tác đó sẽ có hiệu lực, còn nếu hủy bỏ giao tác thì các thao tác cập nhật dữ liệu trong giao tác đó không có hiệu lực

Việc sử dụng giao tác trong việc cập nhật dữ liệu là cần thiết trong các trường hợp liên quan đến những dữ liệu quan trọng

Trình tự thực hiện cập nhật dữ liệu theo giao tác trải qua các bước:

Bước 1: bắt đầu một giao tác

- Sử dụng đối tượng Connection hiện tại:

Trang 16

Trang 71

Connection.Open();

SqlTransaction gt = Connection.BeginTransaction();

Bước 2: thực hiện cập nhật dữ liệu

Thực hiện các thao tác cập nhật dữ liệu

Bước 3: chấp nhận hoặc hủy bỏ giao tác

- Nếu chấp nhận giao tác, ta thực hiện:

5.2 Mô hình truy cập dữ liệu với Command

Đối với mô hình này, việc cập nhật dữ liệu được thực hiện thông qua đối tượng Command, việc đọc dữ liệu thông qua đối tượng DataReader kết hợp với đối tượng Command

5.2.1 Command

Là lớp hỗ trợ việc gửi các câu lệnh SQL đến HQT CSDL có CSDL cần truy cập và hỗ trợ việc đọc dữ liệu gửi về từ HQT CSDL Một số thuộc tính và phương thức của lớp Command:

CommandType kiểu Command, là một trong ba giá trị: Text (mặc định),

StoredProcedure, TableDirect

CommandText tương ứng với CommandType là một trong ba kiểu: câu

lệnh SQL, tên thủ tục lưu trữ, tên bảng

Connection đối tượng kết nối

ExecuteNonQuery() thực thi truy vấn cập nhật (Insert, Delete, Update) và trả

về số lượng dòng dữ liệu bị ảnh hưởng bởi truy vấn

Giả sử: biến cmd có CommandText là “Delete SINHVIEN Where masv = A123”;

Khi đó:

int soluong = cmd.ExecuteNonQuery();

Trang 17

Trang 72

ExecuteReader() thực thi một truy vấn và trả về đối tượng DataReader để

truy cập kết quả truy vấn

Giả sử: biến cmd có CommandText là “Select * From SINHVIEN”;

Khi đó:

SqlDataReader rd = cmd.ExecuteReader();

ExecuteScalar() thực thi một truy vấn và trả về giá trị ở cột đầu tiên của

dòng đầu tên trong bảng kết quả truy vấn

Giả sử: biến cmd có CommandText là “Select Count(*) From SINHVIEN”;

Sau đây là một số thuộc tính, phương thức thường dùng của DataReader:

FieldCount số cột của bản ghi

HasRows còn 1 hoặc nhiều dòng dữ liệu chưa đọc tới

IsClosed không còn trong trạng thái đọc

Trang 18

Hình 5-2 mô tả mô hình truy cập dữ liệu với Command

Hình 5-2 Mô hình truy cập dữ liệu với Command

Trong mô hình này, mỗi lần có một thao tác truy cập CSDL, ta mở kết nối với CSDL để thực hiện các thao tác Thực hiện xong, ta đóng kết nối

5.3 Mô hình truy cập dữ liệu nâng cao với cơ sở dữ liệu ảo

Trang 19

Trang 74

- Tables: chứa tập các bảng ảo (DataTable)

- Relations: chứa các mối quan hệ ảo (DataRelation)

5.3.2 DataAdapter

Lớp DataAdapter được xem là cầu nối giữa CSDL (trên Server) và DataSet (CSDL ảo trên bộ nhớ của máy Client) DataAdapter được xem như là một Command thông minh, hỗ trợ việc lấy dữ liệu từ CSDL về DataSet và cập nhật dữ liệu từ DataSet lên CSDL

Việc cập nhật dữ liệu từ DataSet lên CSDL được hỗ trợ bởi CommandBuider CommandBuider hỗ trợ bằng cách tự động sinh các đối tượng Command thích hợp cho việc cập nhật dữ liệu CommandBuider sinh các đối tượng Command dựa vào TableMapping, nơi lưu giữ các thao tác cập nhật dữ liệu trong DataSet

Hình 5-3 mô tả mô hình truy cập dữ liệu với cơ sở dữ liệu ảo

Hình 5-3 Mô hình truy cập dữ liệu với DataSet

Trong mô hình này, trong việc lấy dữ liệu từ CSDL về DataSet, việc mở/đóng kết nối được thực hiện tương tự như mô hình trước Tuy nhiên, trong việc cập nhật dữ liệu từ DataSet lên CSDL, việc mở/đóng kết nối được thực hiện

tự động

Việc lấy dữ liệu từ CSDL về DataSet được thực hiện qua phương thức

Fill() và việc cập nhật dữ liệu từ DataSet lên CSDL được thực hiện thông qua phương thức Update() Các công việc đó có thể được thực hiện như sau:

Bước 1: lấy dữ liệu từ CSDL về DataSet

Giả sử trên CSDL có bảng SINHVIEN

Trang 20

Trang 75

Connection.Open();

cmd.CommandText="Select * From SINHVIEN";

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataTable sv = new DataTable();

SqlCommandBuider cdb = new SqlCommandBuider(da); (*)

da.Fill(sv);

Connection.Close();

Chú ý: nếu không thực hiện việc cập nhật từ DataSet lên CSDL như ở bước 3 thì câu lệnh (*) là không cần thiết

Bước 2: thực hiện các thao tác cập nhật dữ liệu ở DataSet

Ta thực hiện các thao tác thay đổi dữ liệu như: thêm sinh viên, sửa thông tin sinh viên nào đó, xóa bớt sinh viên,…

Nếu sau khi thực hiện một số cập nhật mà ta thấy các thao tác này là

không cần thiết thì có thể sử dụng phương thức RejectChanges() của DataTable

sv

Bước 3: cập nhật dữ liệu từ DataSet lên CSDL

da.Update(sv);

5.4 Buộc dữ liệu

5.4.1 Mô hình truy cập và hiển thị dữ liệu

Hình 5-4 mô tả mô hình truy cập và hiển thị dữ liệu của một ứng dụng:

TextBox, ListBox, DataGridView

1 : Lấy dữ liệu từ 2 : Hiển thị dữ liệu lên 3 : Thay đổi dữ liệu đến

Như vậy, trong mô hình này có ba thành phần: dữ liệu vật lý, đối tượng

dữ liệu và đối tượng hiển thị dữ liệu Trong đó:

Dữ liệu vật lý là dữ liệu được lưu trữ trên bộ nhớ Nó có thể là một file

Hình 5-4 Mô hình buộc dữ liệu

Trang 21

Trang 76

text bình thường, có thể là một file nhị nhân, có thể là một file tuần tự hay có thể

là một file cơ sở dữ liệu

Sau đây là các tiến trình trong quá trình truy cập dữ liệu:

- Đầu tiên, chương trình tiến hành đọc dữ liệu vật lý và lưu tạm trong các đối tượng dữ liệu như: mảng, lớp, DataTable,…

- Tiếp theo, chương trình sẽ hiển thị dữ liệu trong các đối tượng dữ liệu lên các đối tượng hiển thị dữ liệu như TextBox, ListBox, DataGridView,…

- Sau đó, chương trình tiến hành cập nhật dữ liệu trên giao diện Các thay đổi dữ liệu trên các đối tượng hiển thị dữ liệu sẽ được cập nhật đến đối tượng dữ liệu và đồng thời các thay đổi dữ liệu trên các đối tượng dữ liệu do các tiến trình khác cũng sẽ được cập nhật đến đối tượng hiển thị dữ liệu Các thay đổi này có thể xảy ra nhiều lần

- Cuối cùng, chương trình sẽ lưu dữ liệu hiện thời trên các đối tượng dữ liệu xuống dữ liệu vật lý Chú ý: tiến trình này sẽ làm thay đổi dữ liệu thật đang lưu trữ nên cần cân nhắc kỹ trước khi tiến hành

5.4.2 Buộc dữ liệu

Buộc dữ liệu sự kết hợp ăn ý giữa đối tượng dữ liệu (như class, mảng, DataTable,…) và đối tượng hiển thị dữ liệu (như TextBox, ListBox,…) Nếu một đối tượng hiển thị dữ liệu được buộc dữ liệu với một đối tượng dữ liệu thì nếu có sự thay đổi dữ liệu ở đối tượng dữ liệu sẽ làm cho dữ liệu bên đối tượng hiển thị dữ liệu tự động thay đổi theo và ngược lại Có hai loại buộc dữ liệu là: buộc dữ liệu đơn giản và buộc dữ liệu phức tạp

a) Buộc dữ liệu đơn giản:

Là loại buộc dữ liệu mà tại một thời điểm một giá trị đơn của một đối tượng dữ liệu này buộc với một điều khiển Một số điều khiển hỗ trợ buộc dữ liệu đơn giản như: TextBox, CheckBox, RadioButton,…

Giả sử DataTable sv có các thuộc tính: masv, tensv,… Ta có thể buộc thuộc tính tensv của sv với TextBox tb bằng cách:

Trang 22

Trang 77

Các thuộc tính liên quan đến buộc dữ liệu trên các điều khiển:

- DataSource: tên đối tượng dữ liệu

- DataMember: tên đối tượng cụ thể (DataGridView)

- DisplayMember: thuộc tính hiển thị (ListBox, ComboBox)

- ValueMember: giá trị phân biệt (ListBox, ComboBox)

Giả sử có DataSet ds Trong ds có DataTable sv DataTable sv chứa các trường: masv, tensv,… Ta đoạn mã lệnh sau để buộc dữ liệu cho ListBox lb, ComboBox cb, DataGridView dv:

5.5 Câu hỏi và bài tập

1) Sử dụng mô hình truy cập dữ liệu với Command, xây dựng ứng dụng như bài tập 4) ở chương 3 với dữ liệu là CSDL đã xây dựng ở bài tập 1) ở chương 4

2) Thêm hỗ trợ giao tác cho bài tập trên

3) Xây dựng ứng dụng như bài tập 1) với mô hình truy cập dữ liệu nâng cao với CSDL ảo

4) So sánh hai mô hình truy cập dữ liệu đã học theo các tiêu chí: tính dễ

sử dụng, tài nguyên sử dụng,… Theo quan điểm cá nhân, anh (chị) thích mô hình nào hơn?

5) Đề xuất mô hình lai của hai mô hình truy cập dữ liệu đã học Anh (chị)

có thích mô hình này không?

6) Sử dụng mô hình truy cập dữ liệu với Command, xây dựng ứng dụng quản lý cả lớp học và sinh viên thuộc biên chế của lớp đó

7) Xây dựng ứng dụng như bài tập 6) với mô hình truy cập dữ liệu nâng cao với CSDL ảo

8) Nêu những hiểu biết về mô hình MVC trong xây dựng một ứng dụng Windows

Trang 23

Trang 78

5.6 Bài mẫu

Xây dựng các class, Form phục vụ các yêu cầu sau:

- Xây dựng class có tên là KetNoi để giao tiếp đến CSDL được xây dựng trong bài tập mẫu ở chương 4 Trong đó có cho phép cập nhật kiểu CSDL ảo

/// <param name="sql">Câu lệnh SELECT</param>

/// <param name="update">Cho phép CSDL ảo cập

DataTable dt = new DataTable ();

_da = new SqlDataAdapter (sql, _kn);

Trang 24

/// <param name="sql">INSERT/UPDATE/DELETE SQL</param>

public void UpdateData(string sql)

string sql = "Select malop from LOP";

return GetData(sql, false);

DataTable dtsv = new DataTable ();

SqlDataAdapter da = new SqlDataAdapter (cmd);

Ngày đăng: 08/06/2020, 16:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w