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

C# & DATABASE pptx

200 1,2K 3

Đ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 200
Dung lượng 2,7 MB

Nội dung

Các kỹ thuật triển khai ß Sử dụng các kỹ thuật gắn kết dữ liệu để kết nối tập dữ liệu ADO.NET trực tiếp đến các control ß Viết lệnh truy xuất các đối tượng ADO.NET và gắn kết dữ liệu t

Trang 2

NỘI DUNG

III Lưu trữ và xử lý dữ liệu

hàng

Trang 4

I.1- Kiến trúc n-tier

a/- 2-tier

dụng ADO/ADO.NET truy xuất trực tiếp CSDL

dụng vừa và nhỏ, không

có quá nhiều form

Trang 5

I.1- Kiến trúc n-tier

a/- 2-tier (tt)

1 Các kỹ thuật triển khai

ß Sử dụng các kỹ thuật gắn kết dữ liệu để kết nối tập

dữ liệu ADO.NET trực tiếp đến các control

ß Viết lệnh truy xuất các đối tượng ADO.NET và gắn

kết dữ liệu thủ công đến các control

2 Ưu điểm

ß Triển khai nhanh chóng và dễ dàng

ß Quan sát toàn bộ mã lệnh trong form

3 Khuyết điểm

ß Thay đổi quy trình công việc Î biên dịch lại

ß Thay đổi lược đồ dữ liệu Î biên dịch lại

ß Ít khả năng tận dụng được các lệnh xử lý giống

nhau giữa các form do tên field, tên table khác nhau

Trang 6

I.1- Kiến trúc n-tier

b/- 3-tier

Web/Windows service nhằm táchbiệt công việc truyxuất CSDL

ứng dụng lớn có sốlượng form nhiều

và xử lý dữ liệu

Trang 7

I.1- Kiến trúc n-tier

b/- 3-tier (tt)

1 Các kỹ thuật triển khai

ß Tất cả thao tác dữ liệu đều ở XML Web Service Các tập dữ liệu

đều được tạo dựng trên server và trả về thông qua XML stream

ß Các tập dữ liệu được trả về từ XML Web Service có thể được gắn

kết vào các control một cách trực tiếp hoặc thủ công

2 Ưu điểm

ß Triển khai nhanh chóng và dễ dàng

ß Người dùng có thể sử dụng ứng dụng tại bất kỳ nơi nào có kết nối

ß Lược đồ CSDL được xây dựng cố định Î chi phí cập nhật cao

ß Hiệu suất thực hiện kém do phụ thuộc kết nối mạng

Trang 8

I.2.- Mô hình thiết kế ứng dụng:

a/- WaterFall ModelKhảo sát

Trang 9

Cải tiến

Trang 10

I.2.- Mô hình thiết kế ứng dụng (tt)

c/- Spiral Model

Yêu cầu và cài đặt

Ước lượng và giảm thiểu rủi ro

Phát triển và

Tính khả thi

Hiểu rõ yêu cầu

Thiết kế

đúng đắn

Trang 12

II.- ADO.NET

Trang 13

SQL Native Oracle Native Native Library

Access

Kiến trúc ODBC.

Trang 14

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

APPLICATION

OLEDB

SQL Native Oracle Native Native Library

SQL Server Oracle Fox / Access

ODBC

Trang 15

SQL Native Oracle Native Native Library

Access

Kiến trúc ADO.NET.

ODBC SQL/Oracle Provider OLEDB Provider ODBC Provider

Trang 16

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

1 A ctive D ata O bject NET

2 ADO.NET có thể kết nối và thao tác trên các

hệ quản trị CSDL như SQL server, MySQL,

MS Access, Oracle,

3 Tối ưu cho các ứng dụng Internet và phân tán.

4 ADO.NET được thiết kế nhằm tăng tốc độ truy

cập và thao tác dữ liệu trong môi trường đa lớp.

5. Hai thành phần chính của ADO.NET là:

ß Thành phần kết nối (.NET Framework Data Providers)

Trang 17

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

Trang 18

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

.NET framework Data Provider

Transaction

UpdateCommand DeleteCommand

XML

Trang 19

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

1 ADO.NET chỉ cung cấp một đặc tả giao tiếp cho các

đối tượng như Connection, Command, DataReader, DataAdapter

2 Các hệ quản trị CSDL sẽ được xây dựng riêng các

trình điều khiển gọi là Provider

SQL Server NET Data OLE DB NET Data

System.Data.SqlClient System.Data.OleDb SqlCommand

SqlConnection SqlDataAdapter SqlDataReader SqlParameter

OleDbCommand OleDbConnection OleDbDataAdapter OleDbDataReader OleDbParameter

Trang 20

OleDBDataAdapte r

DataSet DataTableCollection

Trang 21

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

a/- Đối tượng Connection

Phương thức

SqlConnection OleDbConnection

Open() Cho phép mở kết nối CSDL với các thuộc tính khai báo

trong ConnectionString Close() Cho phép đóng kết nối CSDL đang mở

CreateCommand() Phương thức này cho phép gán hay trảvề một đối tượng

SqlCommand / OleDbCommand ứng với đối tượng SqlConnection/ OleDbConnection

Dispose() Dùng để giải phóng tài nguyên mà đối tượng

SqlConnection đang sử dụng

Trang 22

II.- ADO.NET

2.- Các đối tượng của ADO.NET

a/- Đối tượng Connection(tt)

1 ConnectionString: chuỗi chỉ định kết nối

2 Mỗi Provider có riêng một định dạng chuỗi kết nối

Trang 23

II.- ADO.NET

2.- Các đối tượng của ADO.NET

a/- Đối tượng Connection (tt)

1 Kết nối CSDL với SQLConnection

ß String connStr = “server=(local);Init Catalog=qlsv;Integrated

Security=True;”;

ß SqlConnection dbConn = new SqlConnection(connStr);

2 Kết nối CSDL với OleDbConnection

ß String connStr = “Provider=SQLOLEDB;Data Source=(local);Init

Trang 24

II.- ADO.NET

2.- Các đối tượng của ADO.NET (tt)

b/- Đối tượng Command

2.b.1.- Đối tượng Command cho phép thi hành các câu

lệnh truy vấn SQL, gọi thủ tục nội của SQL Server,

Connection Mỗi đối tượng SqlCommand được sử dụng

phải kèm theo đối tượng SqlConnection

CommandText Tên bảng, lệnh Sql hoặc tên Storeprocedure

muốn thực hiện trên nguồn dữ liệu

CommandType Tương ứng với giá trị CommandText Gồm

Text, TableDirect, StoredProcedure

CommandTimeout Khai báo thời gian chờ cho câu lệnh thực hiện

(thời gian thực hiện mặc định là 30 giây)

Trang 25

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

ExcuteNonQuery() Phương thức dùng để gọi thực thi các câu lệnh SQL,

thủ tục nội tại của Sql Server, tên bảng dữ liệu.

Kết quả trả về là số mẫu tin chịu tác động của Command

ExcuteReader() Phương thức này trả về một đối tượng DataReader

chỉ đọc một chiều DataReader đọc dữ liệu trực tiếp

từ nguồn dữ liệu nên phải duy trì kết nối cho đến khi đọc xong.

ExcuteScalar() Phương thức này thực hiện lệnh của Command và

trả về giá trị của cột đầu tiên và dòng đầu tiên Phương thức này thường được sử dụng khi muốn Command thực hiện các hàm tính thống kê như : SUM, COUNT, AVG, MAX, MIN… trên nguồn dữ liệu ngay lúc thực thi.

Trang 26

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

2.b.2.- Tạo lệnh truy xuất dữ liệu

ß String sql = “SELECT * FROM SINHVIEN ”;

ß String sql = “vMonHoc”;

ß String sql = “sp_KetQuaSV”;

ß String sql = “INSERT INTO KETQUA VALUES(‘A01’,’K1’,9)”;

2.b.3.- Truy xuất CSDL với SqlCommand

ß SqlCommand dbCmd = new SqlCommand(sql, dbConn);

2.b.4.- Truy xuất CSDL với OleDbCommand

ß OleDbCommand dbCmd = new OleDbCommand(sql, dbConn);

2.b.5.- Thực hiện

ß dbCmd.CommandType = CommandType.XXX;

Trang 27

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

2.b.6.- Thực hiện và nhận kết quả vô hướng

z OleDbCommand dbCmd = new OleDbCommand(“select count(*)

from MonHoc”, dbConn);

z dbCmd.CommandType = CommandType.Text;

z int SLMonHoc = dbCmd.ExecuteScalar();

z SqlCommand dbCmd = new SqlCommand(“select count(*) from

MonHoc”, dbConn);

z dbCmd.CommandType = CommandType.Text;

z int SLMonHoc = dbCmd.ExecuteScalar();

Trang 28

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

z Parameter dùng để truyền tham số cho chuỗi

lệnh Sql trong thuộc tính CommandText có thể

sử dụng dấu ? thay thế cho các giá trị chưa xác định, hay thủ tục nội của Sql có thể cần phải truyền các tham số đầu vào/ đầu ra.

z Cơ chế Parameter giúp cho việc truyền tải

thông tin giữa ứng dụng và server mang tính bảo mật và an toàn hơn cách thức nối chuỗi SQL thông thường

Trang 29

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

Thuộc tính của

Parameters

Mô tả

Direction Giá trị cho biết loại tham số với các giá trị sau:

+ Input (mặc định): loại tham số đầu vào +Output: loại tham số đầu ra

+InputOutput: loại tham số vào/ra +ReturnValue: loại tham số nhận giá trị trả về của một thủ tục nội, một hàm, hàm do người dùng định nghĩa.

Trang 30

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

Để đưa tham số cho Command, chúng

ta có thể sử dụng một trong các cách sau:

1 Dùng phương thức CreateParameter

của Command và Add của tập hợp

Parameters

2 Đưa tham số vào tập hợp Parameters

3 Tạo tham số và đưa vào tập hợp

Parameters

Trang 31

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Đối tượng Command (tt)

a/- Tạo Stored Procedure

CREATE PROCEDURE sp_KetQuaSV

kq.MaKH=k.MaKH AND k.MaMH=mh.MaMH

END

Trang 32

II.- ADO.NET

2.- Các đối tượng của ADO.NET

b/- Gọi Stored Procedure - OleDbCommand

ß OleDbCommand dbCmd = new OleDbCommand(“sp_KetQuaSV”,

c/- Gọi Stored Procedure – SqlCommand

ß SqlCommand dbCmd = new SqlCommand(“sp_KetQuaSV”,

dbConn);

ß dbCmd.CommandType = CommandType.StoredProcedure;

ß dbCmd.Parameters.Add("@masv", SqlType.NVarChar).Value =

"A01“;

Trang 33

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter

lý logic một cách hiệu quả giữa ứngdụng và CSDL

tách rời DataAdapter cung cấp cùng lúc

4 đối tượng Command: Select, Insert, Update, Delete

chỉ đóng vai trò cầu nối giữa Connection

và DataTable (DataSet)

Trang 34

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

1 Khai báo sử dụng:

ß Dim adap As New SqlDataAdapter(dbCmd)

ß Dim adap As New OleDbDataAdapter(dbCmd)

tương ứng, đã được tạo ra vớiSqlConnection hoặc OleDbConnectiontương ứng và Connection này phải đãđược mở (Open)

Trang 35

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

3 Phương thức Fill – Đọc và lưu trữ dữ liệu

ß DataAdapter cung cấp 4 đối tuợng Command

trong đó phương thức Fill tương ứng với việc gọi SELECT Command

ß Lệnh khai báo đối tượng ở slide trước chỉ nên

dùng cho các đối tượng Command thực hiện lệnh SELECT

Command, chúng ta nên tạo riêng từng Command này.

Trang 36

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

4 SELECT Command (đổi Sql thành OleDb để sử

dụng OLEDB)

ß SqlDataAdapter adap = new SqlDataAdapter();

ß adap.SelectCommand = new SqlCommand(“SELECT *

FROM MonHoc”, dbConn);

ß DataTable tbl = new DataTable();

ß adap.Fill(tbl);

ß ‘ Các lệnh xử lý khác

Trang 37

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

5.- Update – Cập nhật dữ liệu

ß Phương thức Update hoạt động dựa trên 3

Command còn lại (Insert, Update, Delete)

ß Khi trình bày dữ liệu trên Form thông qua các

control, phương thức Update sẽ tự động cập nhật tất cả thay đổi lên CSDL thông qua 3 Command này

minh 3 Command này

Trang 38

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

6.- Đổi Sql thành OleDb để sử dụng OLEDB

a/- INSERT Command

adap.InsertCommand = new SqlCommand(“INSERT INTO MonHoc

VALUES (@mamh, @tenmh, @sotc)”, dbConn) adap.InsertCommand.Parameters.Add(“@mamh”).SourceColumn= “MaMH”

adap.InsertCommand.Parameters.Add(“@tenmh”).SourceColumn= “TenMH”

adap.InsertCommand.Parameters.Add(“@sotc”).SourceColumn=“SoTC”

Trang 39

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

b/- UPDATE Command

adap.UpdateCommand = New SqlCommand(“UPDATE MonHoc SET

TenMH=@tenmh, SoTC=@sotc WHERE MaMH=@mamh”, dbConn) adap.UpdateCommand.Parameters.Add(“@mamh”).SourceColumn=

“MaMH”

adap.UpdateCommand.Parameters.Add(“@tenmh”).SourceColumn=

“TenMH”

adap.UpdateCommand.Parameters.Add(“@sotc”).SourceColumn=“SoTC”

Trang 40

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

Trang 41

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

z Sử dụng đối tượng SqlCommandBuilder /

OleDBCommandBuilder để xây dựng tự động

3 Command còn lại dựa vào SELECT

Command được cung cấp ban đầu

SqlDataAdapter adap = new SqlDataAdapter(“select

* from SinhVien”, dbConn);

SqlCommandBuilder cmdBuilder = new

SqlCommandBuilder(adap);

DataTable tbl = new DataTable();

adap.Fill(tbl);

Trang 42

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

Ví dụ Đọc tên SV và hiển thị trong List

private void btnKetNoi_Click(object sender, EventArgs e)

{

String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=C:\Users\NghiaTran\Documents\qlsv.mdb;User ID=Admin;Password=“;

OleDbConnection dbConn = new OleDbConnection(connStr);

OleDbCommand dbCmd = new OleDbCommand("select * from sinhvien" ,

dbConn);

OleDbAdapter adap = new OleDbDataAdapter(dbCmd);

DataSet ds = new DataSet();

Trang 43

II.- ADO.NET

2.- Các đối tượng của ADO.NET

c/- Đối tượng DataAdapter (tt)

Ví dụ Hiển thị và cập nhật trong DataGrid

1. Tạo project mới, trong Form1 thêm các lệnh using cần thiết, vẽ 2

button và 1 DataGridView Viết lệnh như sau

// biến thành viên của form

OleDbConnection dbConn = new OleDbConnection(connStr);

OleDbDataAdapter adap = new OleDbDataAdapter();

private void btnMonHoc_Click(object sender, EventArgs e)

{

String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=C:\Users\NghiaTran\Documents\qlsv.mdb;User ID=Admin;Password=“;

// Gõ các lệnh xây dựng 4 Command ở các slide trước

DataTable tbl = new DataTable();

Trang 44

NỘI DUNG (tt)

bán hàng

Trang 46

II.-Lưu trữ và xử lý dữ liệu

1.- DataTable

1 Dùng lưu trữ và xử lý dữ liệu được lấy từ

CSDL thông qua đối tượng DataAdapter

2 DataTable có khả năng tạo bảng mới với

cấu trúc bảng được tạo thông qua các đối tượng DataColumn; thêm dữ liệu mới và cập nhật dữ liệu đã có bằng DataRow

3 Trong môn học này, DataTable chủ yếu

được dùng để lưu trữ dữ liệu phục vụ cho việc trình bày dữ liệu trên Form

4 using System.Data

Trang 47

bảng con TableName Tên của DataTable

Columns Tập hợp các cột trong bảng (thuộc lớp DataColumn)

Rows Tập hợp các dòng dữ liệu của bảng (thuộc lớp

DataRow) Constraints Tập hợp các ràng buộc trong bảng

DataSet Cho biết DataSet chứa bảng

DefaultView Cho biết DefaultView phát sinh từ bảng

PrimaryKey Mảng các cột có chức năng làm khoá chính của bảng

Trang 48

II.-Lưu trữ và xử lý dữ liệu

1.- Đối tượng DataTable (tt)

Phương thức Mô tả

GetChanges() Trả về một DataTable chứa các dòng dữ liệu bị

người dùng thay đổi RejectChanges() Hủy bỏ tất cả những thay đổi của người dùng trên

dữ liệu

AcceptChanges() Chấp nhận tất cả những thay đổi của người dùng

trên dữ liệu Clear() Xóa toàn bộ dữ liệu trong bảng

Copy() Tạo DataTable mới có cùng cấu trúc và dữ liệu

Clone() Tạo DataTable mới có cùng cấu trúc nhưng không

có dữ liệu LoadDataRow Thêm các dòng dữ liệu mới dạng mảng vào bảng

WriteXml Ghi toàn bộ cấu trúc và dữ liệu ra file XML

Trang 49

II.-Lưu trữ và xử lý dữ liệu

2.- Đối tượng DataSet

Disconnected

ß Tạo kết nối CSDL khi cần

ß Ngắt kết nối khi thực hiện xong thao tác

ß Không chiếm giữ nhiều tài nguyên

ß Phục vụ được nhiều ứng dụng

ß Những thay đổi trên CSDL diễn ra tại một nơi

khác sẽ không được cập nhật ngay cho người dùng

Trang 50

II.-Lưu trữ và xử lý dữ liệu

2.- Đối tượng DataSet (tt)

thu nhỏ, do nó có thể bao gồm nhiều:

ß DataTable (các table, view trong CSDL)

ß DataRelation

ß Stored Procedure

Trang 53

II.-Lưu trữ và xử lý dữ liệu

2.- Đối tượng DataSet (tt)

của hai đối tượng thuộc tính Relations vàTables để thêm, xóa DataTable hay

DataRelation vào DataSet

DataAdapter cho DataSet thì DataSet sẽ

có số lượng DataTable tương ứng với sốlượng câu truy vấn trong đối tượng

SELECT Command của DataAdapter

Trang 54

II.-Lưu trữ và xử lý dữ liệu

3.- BindingSource

các dòng trong DataTable Trong chứcnăng này, BindingSource đóng vai tròcầu nối giữa DataTable với control hiểnthị dữ liệu (DataGridView)

cập nhật giữa 2 DataTable khi xây dựngMaster/Detail form

Trang 55

II.-Lưu trữ và xử lý dữ liệu

Ví dụ về DataSet, DataTable, BindingSource

frmSinhVien

cùng 1 TextBox trên Toolbar như trên hình

Trang 56

II.-Lưu trữ và xử lý dữ liệu

4 Khai báo biến thành viên của lớp như sau:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

C:\Users\NghiaTran\Documents\qlsv.mdb;User ID=Admin;Password=“;

Trang 57

II.-Lưu trữ và xử lý dữ liệu

5 Chận sự kiện Form_Load, thực hiện:

private void KetQuaSV_Load(object sender, EventArgs e)

{

OleDbCommandBuilder cmdBuilder; // dùng xây dựng các lệnh

dbConn = new OleDbConnection(connStr);

dbConn.Open();

adapSV = new OleDbDataAdapter("select * from sinhvien", dbConn);

cmdBuilder = new OleDbCommandBuilder(adapSV);

dsSV = new DataSet();

adapSV.Fill(dsSV); // lấy và lưu trữ dữ liệu

bindSV = new BindingSource(); // tạo BindingSource

bindSV.DataSource = dsSV.Tables[0]; // chỉ định nguồn dữ liệu cho bind

dgrSV.DataSource = bindSV; // nguồn dữ liệu cho lưới là bind

}

Ngày đăng: 02/08/2014, 09:20

Xem thêm

TỪ KHÓA LIÊN QUAN

w