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

bài 4 lập trình với csdl ado.net và kiến trúc không kết nối và lập tình giao diện

58 699 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 đề Bài 4 Lập trình với CSDL ADO.NET và kiến trúc không kết nối và lập trình giao diện
Trường học University of Technology and Education in Ho Chi Minh City
Chuyên ngành Lập trình C# và cơ sở dữ liệu
Thể loại Bài giảng
Thành phố Hồ Chí Minh
Định dạng
Số trang 58
Dung lượng 12 MB

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

Nội dung

Các nhóm điều khiển trên formCác điều khiển thường dùng Các điều khiển chứa Các điều khiển menu Các điều khiển dữ liệu Các thành phần Các điều khiển hỗ trợ in Các điều khiển hộp thoại Sự

Trang 1

Bài 4:

LẬP TRÌNH VỚI CSDL ADO.NET & KIẾN TRÚC KHÔNG KẾT NỐI

& LẬP TRÌNH GIAO DIỆN

Trang 2

Các nhóm điều khiển trên form

Các điều khiển thường dùng

Các điều khiển chứa

Các điều khiển menu

Các điều khiển dữ liệu

Các thành phần

Các điều khiển hỗ trợ in

Các điều khiển hộp thoại

Sự kiện và xử lý sự kiện trong C#

Hệ thống bài cũ

Các nhóm điều khiển trên form

Các điều khiển thường dùng

Các điều khiển chứa

Các điều khiển menu

Các điều khiển dữ liệu

Các thành phần

Các điều khiển hỗ trợ in

Các điều khiển hộp thoại

Sự kiện và xử lý sự kiện trong C#

Lập trình giao diện - ứng dụng gồm nhiều form 2

Trang 3

Thêm Toolbar, Tooltip vào form

Giới thiệu về ADO.NET

Trang 4

ADO.NET (ActiveX Data Objects NET) là một thành

phần trong NET Framework đảm nhiệm vai trò thao

tác với CSDL

ADO.NET

ADO.NET (ActiveX Data Objects NET) là một thành

phần trong NET Framework đảm nhiệm vai trò thao

tác với CSDL

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 4

Trang 5

ADO.NET là cầu nối giữa ứng dụng và CSDL

ADO.NET hỗ trợ các lập trình viên kết nối với hệ quản trịCSDL như SQL Server, Microsoft Access, Oracle…

ADO.NET

ADO.NET là cầu nối giữa ứng dụng và CSDL

ADO.NET hỗ trợ các lập trình viên kết nối với hệ quản trịCSDL như SQL Server, Microsoft Access, Oracle…

Trang 6

Hỗ trợ lập trình

Cung cấp các lớp thao tác với CSDL giúp lập trình viên lập

trình nhanh hơn và giảm bớt lỗi

Cung cấp các công cụ để thao tác với CSDL ngay trên

phần Designer giúp lập trình viên tương tác với CSDL mà

không cần hiểu sâu về CSDL

Cung cấp các lớp thao tác với CSDL giúp lập trình viên lập

trình nhanh hơn và giảm bớt lỗi

Cung cấp các công cụ để thao tác với CSDL ngay trên

phần Designer giúp lập trình viên tương tác với CSDL mà

không cần hiểu sâu về CSDL

Trang 7

Kiến trúc không kết nối

Kết nối được thiết lập và tạo một bản sao của CSDL ngay trên máy tính, sau đó kết nối được đóng

Thao tác với bản sao và update lại CSDL khi cần thiết

Ưu điểm

Tiết kiệm tài nguyên Bảo mật vì kết nối được mở trong thời gian ngắn

Kiến trúc không kết nối

Kiến trúc không kết nối

Kết nối được thiết lập và tạo một bản sao của CSDL ngay trên máy tính, sau đó kết nối được đóng

Thao tác với bản sao và update lại CSDL khi cần thiết

Ưu điểm

Tiết kiệm tài nguyên Bảo mật vì kết nối được mở trong thời gian ngắn

Trang 8

ADO gồm hai phần

.NET data provider: cung cấp các lớp để kết nối, thực thi

lệnh SQL trên CSDL và lấy kết quả trả về

Dataset: lưu trữ bản sao của CSDL trên bộ nhớ Cung cấp

các phương thức cho phép ứng dụng thao tác với bản sao

Các thành phần chính của ADO.NET

ADO gồm hai phần

.NET data provider: cung cấp các lớp để kết nối, thực thi

lệnh SQL trên CSDL và lấy kết quả trả về

Dataset: lưu trữ bản sao của CSDL trên bộ nhớ Cung cấp

các phương thức cho phép ứng dụng thao tác với bản sao

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 8

Trang 9

Data provider cung cấp các lớp để tương tác với CSDL

Data provider gồm 4 thành phần chính

Connection: kết nối với CSDL

Command: thực thi các lệnh sql để lấy dữ liệu từ CSDL

hoặc thay đổi CSDL

DataReader: đọc dữ liệu tuần tự từ CSDL

DataAdapter: lấy dữ liệu từ CSDL lưu vào dataset và cập

nhật CSDL

Data provider

Data provider cung cấp các lớp để tương tác với CSDL

Data provider gồm 4 thành phần chính

Connection: kết nối với CSDL

Command: thực thi các lệnh sql để lấy dữ liệu từ CSDL

hoặc thay đổi CSDL

DataReader: đọc dữ liệu tuần tự từ CSDL

DataAdapter: lấy dữ liệu từ CSDL lưu vào dataset và cập

nhật CSDL

Trang 10

Ví dụ thực tiễn

Vấn đề: Một ngân hàng đa quốc gia có rất nhiều chi

nhánh Giả sử một chi nhánh ở Việt Nam muốn truy cập

DataSet Hỗ trợ kiến trúc không kết nối

Kết nối đến CSDL chỉ được mở khi lấy dữ liệu về dataset

và cập nhật dữ liệu trở lại CSDL

Mọi thao tác sẽ được thực hiện trên DataSet

DataSet không phụ thuộc vào loại CSDL

Dataset

Ví dụ thực tiễn

Vấn đề: Một ngân hàng đa quốc gia có rất nhiều chi

nhánh Giả sử một chi nhánh ở Việt Nam muốn truy cập

DataSet Hỗ trợ kiến trúc không kết nối

Kết nối đến CSDL chỉ được mở khi lấy dữ liệu về dataset

và cập nhật dữ liệu trở lại CSDL

Mọi thao tác sẽ được thực hiện trên DataSet

DataSet không phụ thuộc vào loại CSDL

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 10

Trang 11

Cấu trúc của DataSet giống hệt cấu trúc của cơ sở dữ

liệu

Mỗi dataset gồm nhiều bảng

Các bảng có ràng buộc với nhau

Mỗi dataset gồm nhiều bảng

Các bảng có ràng buộc với nhau

Mỗi bảng có nhiều dòng và cột

Mỗi cột có nhiều dòng

Mỗi dòng có nhiều cột

Trang 12

DataAdapter kết nối với CSDL thông qua Connection, lấy

dữ liệu lưu vào DataSet

Ứng dụng sẽ lấy và thay đổi dữ liệu trên DataSet

DataAdapter kết nối với CSDL thông qua Connection vàcập nhật lại CSDL

Kiến trúc không kết nối

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 12

Trang 13

Các data provider được đặt trong các namespace khác nhau

Các lớp cho các data provider

Các loại Data provider

SQL Server System.Data.SqlClient OLE DB System.Data.OleDb

Oracle System.Data.OracleClient

Các data provider được đặt trong các namespace khác nhau

Các lớp cho các data provider

Oracle System.Data.OracleClient

Connection SqlConnection OleDbConnection OdbcConnection OracleConnection Command SqlCommand OleDbCommand OdbcCommand OracleCommand Data reader SqlDataReader OldeDbDataReader OdbcDataReader OracleDataReader Data

adapter

SqlDataAdapter OleDbDataAdapter OdbcDataAdapter OracleDataAdapter

Trang 14

Các lớp của các loại data provider về cơ bản giống

Các loại Data provider

Các lớp của các loại data provider về cơ bản giống

Trang 15

Thực hiện kết nối với CSDL

Phương thức khởi tạo

Thuộc tính và phương thức

Các giá trị trên chuỗi kết nối

SqlConnection

new SqlConnection() new SqlConnection( chuỗi-kết-nối )

Thuộc tính/Phương thức Mô tả

ConnectionString Cung cấp thông tin để truy cập đến CSDL SQL Server

Thực hiện kết nối với CSDL

Phương thức khởi tạo

Thuộc tính và phương thức

Các giá trị trên chuỗi kết nối

ConnectionString Cung cấp thông tin để truy cập đến CSDL SQL Server

Data source/Server Tên Server CSDL

Initial catalog/DataBase Tên của CSDL

UserID Tên của user đăng nhập vào CSDL

Trang 16

DataAdapter hoạt động như cầu nối giữa dataset và

CSDL

SqlDataAdapter

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 16

Trang 17

Phương thức khởi tạo

liệu từ dataset InsertCommand Lệnh sql hoặc sp để thêm dữ

liệu vào dataset UpdateCommand Lệnh sql hoặc sp để cập nhật

dữ liệu cho dataset

Trang 18

đổi trên dataset lên CSDL

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 18

Trang 19

Sử dụng phương thức DataAdapter để fill Dataset

Đọc dữ liệu vào form từ Dataset

Thay đổi dữ liệu trên Dataset

Update lại dữ liệu trên CSDL

Demo thao tác với

dữ liệu bằng kiến trúc không kết nối

Trang 20

Các bước thực hiện Lập trình cơ sở dữ liệu

1 Khai báo các biến

SqlConnection conn; // biến connection kết nối đến CSDL

SqlCommand com; // thực thi các lệnh sql để lấy dữ liệu từ hoặc là thay

//đổi CSDL SqlDataAdapter da; // biến có kiểu

DataSet ds; // biến dataset

2 Khởi tạo biến

conn = new SqlConnection(" Data Source=localhost; Initial Catalog=ProductDB;Persist Security

da.Fill(ds, "Products"); // Đưa kết quả câu lệnh truy vấn vào dataset

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 20

2 Khởi tạo biến

conn = new SqlConnection(" Data Source=localhost; Initial Catalog=ProductDB;Persist Security

da.Fill(ds, "Products"); // Đưa kết quả câu lệnh truy vấn vào dataset

3 Lấy 1 dòng dữ liệu trong bảng

ds.Tables[0].Rows.Count; // trả về tổng số bản ghi

ds.Tables[0].Rows[i].ItemArray[ j ].ToString() // Lấy cột thứ J của hàng thứ i

Trang 21

Demo load dữ liệu vào ListView

private void frmBookDetails_Load(object sender, EventArgs e)

Trang 22

Demo hiển thị dữ liệu khi một dòng trên ListView được chọn

private void lvwBookDetails_Click(object sender, EventArgs e)

{

int index = lvwBookDetails.SelectedItems[0].Index; // Dòng được chọn

DataRow dr = ds.Tables[ "Products"].Rows[index]; // Lấy dòng được chọn

Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối 22

private void lvwBookDetails_Click(object sender, EventArgs e)

{

int index = lvwBookDetails.SelectedItems[0].Index; // Dòng được chọn

DataRow dr = ds.Tables[ "Products"].Rows[index]; // Lấy dòng được chọn

Trang 23

ỨNG DỤNG

GỒM NHIỀU FORM ỨNG DỤNG

GỒM NHIỀU FORM

Trang 24

Ứng dụng Payment gồm 2 form

Form Payment được mở khi nhấn vào button Select

Payment trên form Customer

Thao tác trên form Payment mới được thao tác trên form Customer

Chạy thử ứng dụng Payment

Lập trình giao diện - ứng dụng gồm nhiều form 24

Trang 25

Có thể thêm một form mới hoặc một form có sẵn vào

Project

Thêm form vào Project

Thêm một form mới

Thêm một form mới

Thêm một form có sẵn

Trang 26

Thêm form frmPayment và thiết kế như sau

Demo thêm form Payment vào Project

Lập trình giao diện - ứng dụng gồm nhiều form 26

Trang 27

Khi ứng dụng nhiều form chạy, theo mặc định ứng dụng

sẽ tải form được tạo đầu tiên trước

Đối với ứng dụng nhiều form, với form này gọi form kia

Có thể lập trình viên muốn chạy từng form để kiểm thửtừng form

Hiển thị form đầu tiên của Project

Trang 28

Thông tin về form được tải đầu tiên của project được lưutrong file Program.cs

Demo hiển thị form đầu tiên của Project

static void Main()

Lập trình giao diện - ứng dụng gồm nhiều form 28

static void Main()

Trang 29

Có hai cách hiển thị form mới

Hiển thị theo kiểu dialog: Người dùng phải thao tác với

form mới này trước tiên

Hiển thị thông thường: Người dùng có thể thao tác với

form tùy ý

Cách hiển thị form mới

B1 Sử dụng từ khóa new để tạo form mới

B2 Sử dụng phương thức ShowDialog hoặc Show của

form mới để hiển thị form

Hiển thị form mới

Có hai cách hiển thị form mới

Hiển thị theo kiểu dialog: Người dùng phải thao tác với

form mới này trước tiên

Hiển thị thông thường: Người dùng có thể thao tác với

form tùy ý

Cách hiển thị form mới

B1 Sử dụng từ khóa new để tạo form mới

B2 Sử dụng phương thức ShowDialog hoặc Show của

form mới để hiển thị form

Form paymentForm = new frmPayment();

paymentForm.ShowDialog(); //Hiển thị form dialog

paymentForm.Show(); //Hiển thị form thông thường

Trang 30

Demo hiển thị form Payment khi người dùng nhấn vào

button Select Payment trên form Customer

Demo hiển thị form Payment

private void btnSelectPayment_Click(object sender, System EventArgs e) {

Form paymentForm = new frmPayment();

DialogResult selectedButton = paymentForm.ShowDialog();

}

Lập trình giao diện - ứng dụng gồm nhiều form 30

private void btnSelectPayment_Click(object sender, System EventArgs e) {

Form paymentForm = new frmPayment();

DialogResult selectedButton = paymentForm.ShowDialog();

}

Trang 31

DialogResult result = MessageBox.Show( "Bạn muốn xóa không", "Xóa",

Form Dialog được tạo sẵn

Form Dialog tự tạo

Xử lý sự kiện cho các button trên form dialog tự tạo

Thiết lập giá trị cho thuộc tính DialogResult

Lấy phản hồi của người dùng từ Dialog

Form Dialog được tạo sẵn

Form Dialog tự tạo

Xử lý sự kiện cho các button trên form dialog tự tạo

Thiết lập giá trị cho thuộc tính DialogResult

this.DialogResult = DialogResult.OK;

Trang 32

Form Payment

Form Customer

Demo lấy phản hồi từ form Payment

private void btnOK_Click(object sender, EventArgs e)

Lập trình giao diện - ứng dụng gồm nhiều form 32

private void btnCancel_Click(object sender, EventArgs e)

Form paymentForm = new frmPayment();

DialogResult selectedButton = paymentForm.ShowDialog();

if (selectedButton == DialogResult.OK) {

MessageBox.Show( "Bạn vừa chọn OK");

} }

Trang 33

Form cung cấp thuộc tính Tag để lưu đối tượng chứa dữliệu của form

Cũng có thể tự khai báo thuộc tính bất kỳ để lưu dữ liệucho form và truyền cho form khác bằng cách truy cập

đến thuộc tính đó trên form khác

Truyền dữ liệu giữa các form

Trang 34

Form Payment

Form Customer

Demo truyền dữ liệu

từ form Payment cho form Customer

private void btnOK_Click(object sender, EventArgs e)

Lập trình giao diện - ứng dụng gồm nhiều form 34

private void btnOK_Click(object sender, EventArgs e)

Form paymentForm = new frmPayment();

DialogResult selectedButton = paymentForm.ShowDialog();

if (selectedButton == DialogResult.OK) {

lblPayment.Text = (string) paymentForm.Tag;

} }

Trang 35

Sự kiện xẩy ra khi người dùng nhấn vào button gọi đếnphương thức Close của form nhưng trước khi form đượcđóng thực sự

Sự kiện này thường được dùng để ngăn người dùng

đóng form chứa dữ liệu chưa được lưu

Nếu muốn đóng form, thiết lập e.Cancel = false (mặc

//Viết mã ở đây

}

Sự kiện xẩy ra khi người dùng nhấn vào button gọi đếnphương thức Close của form nhưng trước khi form đượcđóng thực sự

Sự kiện này thường được dùng để ngăn người dùng

đóng form chứa dữ liệu chưa được lưu

Nếu muốn đóng form, thiết lập e.Cancel = false (mặc

định)

Nếu muốn hủy lệnh đóng form, thiết lập e.Cancel = true

private void frmCustomer_FormClosing(object sender,

FormClosingEventArgs e) {

//Viết mã ở đây

}

Trang 36

Demo xử lý sự kiện FormClosing cho frmCustomer

private void frmCustomer_FormClosing(object sender,

FormClosingEventArgs e) {

if (isDataSaved == false)

{

string message =

"This form contains unsaved data.\n\n" +

"Do you want to save it?";

DialogResult button =

MessageBox.Show(message, "Customer",

MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);

if (button == DialogResult.Yes) {

//Đoạn mã lưu dữ liệu

}

if (button == DialogResult.Cancel) {

e.Cancel = true;

} }

}

Lập trình giao diện - ứng dụng gồm nhiều form 36

private void frmCustomer_FormClosing(object sender,

FormClosingEventArgs e) {

if (isDataSaved == false)

{

string message =

"This form contains unsaved data.\n\n" +

"Do you want to save it?";

DialogResult button =

MessageBox.Show(message, "Customer",

MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);

if (button == DialogResult.Yes) {

//Đoạn mã lưu dữ liệu

}

if (button == DialogResult.Cancel) {

e.Cancel = true;

} }

}

Trang 37

Ứng dụng SDI (single document interface – giao diện

đơn tài liệu) là ứng dụng

gồm nhiều form độc lập với nhau

mỗi form có thể có menu và toolbar riêng

mỗi form chạy trên một cửa sổ riêng

Với loại ứng dụng này cần có một form chính cung cấptruy cập đến các form khác của ứng dụng

Ứng dụng SDI

Ứng dụng SDI (single document interface – giao diện

đơn tài liệu) là ứng dụng

gồm nhiều form độc lập với nhau

mỗi form có thể có menu và toolbar riêng

mỗi form chạy trên một cửa sổ riêng

Với loại ứng dụng này cần có một form chính cung cấptruy cập đến các form khác của ứng dụng

Trang 38

Chạy thử ứng dụng SDI Financial Calculation

Lập trình giao diện - ứng dụng gồm nhiều form 38

Form chính

Trang 39

Gọi đến form frmFutureValue khi nhấn vào button

Calculate Future Value trên form frmMain

Gọi đến form frmDepreciation khi nhấn vào button

Calculate SYD Depreciation trên form frmMain

Demo gọi đến các form từ form chính

private void btnFutureValue_Click(object sender, System EventArgs e)

{

Form newForm = new frmFutureValue();

newForm.Show();

}

Gọi đến form frmFutureValue khi nhấn vào button

Calculate Future Value trên form frmMain

Gọi đến form frmDepreciation khi nhấn vào button

Calculate SYD Depreciation trên form frmMain

private void btnFutureValue_Click(object sender, System EventArgs e)

Trang 40

Đóng tất cả các form (khi người dùng nhấn vào button

Exit của form chính)

Đóng từng form (khi người dùng nhấn vào button Close

Đóng tất cả các form (khi người dùng nhấn vào button

Exit của form chính)

Đóng từng form (khi người dùng nhấn vào button Close

của từng form)

Lập trình giao diện - ứng dụng gồm nhiều form 40

private void btnClose_Click(object sender, EventArgs e)

{

this.Close();

}

Ngày đăng: 23/05/2014, 16:06

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w