7ado_net_535

26
LẬP TRÌNH LẬP TRÌNH CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU

Transcript of 7ado_net_535

Page 1: 7ado_net_535

LẬP TRÌNH LẬP TRÌNH

CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU

Page 2: 7ado_net_535

ADO.NET là một tập các lớp nằm trong bộ thư viện lớp cơ sở của .NET Framework, cho phép các ứng dụng Windows (như C#, VB.NET…) hay ứng dụng web (như ASP.NET) thao tác dễ dàng với các nguồn dữ liệu

Giới thiệu ADO.NET

Page 3: 7ado_net_535

ADO.NET bao gồm 2 Provider (2 bộ thư viện) (thường dùng) để thao tác với các CSDL là

- OleDb Provider (nằm trong System.Data.OleDb) dùng để truy xuất đến bất kỳ CSDL nào có hỗ trợ OleDb

- SQL Provider (nằm trong System.Data.SQLClient) chuyên dùng để truy xuất đến CSDL SQL Server

Giới thiệu ADO.NET

Page 4: 7ado_net_535

ADO.NET có 5 thành phần chính:

– Connection

– Command

– DataReader

– DataAdapter

– DataSet

Giới thiệu ADO.NET

Page 5: 7ado_net_535

ADO.NET thao tác với CSDL theo hai mô hình:

- Phi kết nối (Disconected data)

- Kết nối (Connected data).

Giới thiệu ADO.NET

Page 6: 7ado_net_535

Đối tượng ConnectionĐối tượng Connection

1. Chức năng: Đối tượng Connection có nhiệm vụ thực hiện

kết nối đến Cơ sở dữ liệu để các đối tượng như Command thao tác với CSDL thông qua Connection này

2. Phương thức Open(): Mở kết nối tới CSDL Close(): Đóng kết nối

Page 7: 7ado_net_535

Đối tượng ConnectionĐối tượng Connection

3. Khai báo đối tượng Connection

→ 1 vài cách

4. Khai báo chuỗi kết nối:– Cách 1:– Cách 2:– Cách 3:

Page 8: 7ado_net_535

Đối tượng ConnectionĐối tượng Connection

• strConnect= Data Source=(local)\SQLEXPRESS; AttachDbFilename=|DataDirectory|dbWeb.mdf;Integrated Security=True;User Instance=True

• strConnect2= Data Source=VIETHQTK1\SQLEXPRESS; Initial Catalog=dbWeb;Integrated Security=True

• strConnect2= Data Source=.; Initial Catalog=dbWeb;Integrated Security=True

Page 9: 7ado_net_535

Đối tượng CommandĐối tượng Command

1. Chức năng– Dùng để thực thi các câu lệnh SQL thao tác

với CSDL như : Insert, Update, Select, Delete…

– Trước khi thực thi câu lệnh SQL bằng đối tượng Command thì bắt buộc phải mở kết nối tới CSDL

2. Khai báo đối tượng Command→ …………………

Page 10: 7ado_net_535

Đối tượng CommandĐối tượng Command

3. Các phương thức của đt Command• ExecuteScalar(): Thực hiện câu lệnh mà kết quả

trả về chỉ có 1 ô (Ví dụ câu lệnh Select Count(*)…).• ExecuteReader(): Thực hiện câu lệnh Select và trả

về một DataReader• ExecuteNonQuery(): Thực hiện câu lệnh SQL

(Delete, Update, Insert …).• ExecuteXMLReader(): Tạo một bộ đọc từ file XML.

Phương thức này không có trong OleDbCommand, chỉ có trong SqlCommand.

Page 11: 7ado_net_535

Đối tượng CommandĐối tượng Command

4. Các thuộc tính của đối tượng Command• CommandText: Khai báo câu lệnh SQL, tên của

StoredProcedure.• CommandType:• Connection: Đối tượng Connect tới CSDL.• CommandTimeout:

Page 12: 7ado_net_535

Đối tượng CommandĐối tượng Command

4. Sử dụng đối tượng Command

Page 13: 7ado_net_535

Đối tượng DataReaderĐối tượng DataReader

1. Chức năng:• Dùng để đón nhận kết quả (dữ liệu) trả về từ

phương thức ExecuteReader của đối tượng Command, dữ liệu là Readonly và chỉ đọc theo chiều tiến.

2. Khai báo• Khai báo: SqlDataReader Biến_DataReader;//Không có New

• Lấy kết quả từ Command<Biến_DataReader > = <Biến_Command>.ExecuteReader();

Page 14: 7ado_net_535

Đối tượng Đối tượng DataAdapterDataAdapter

1. Chức năng:• Có chức năng như một chiếc cầu nối giữa nguồn

(tệp) dữ liệu và các bảng được cached trong bộ nhớ (đối tượng DataSet.). DataAdapter sử dụng phương thức Fill() để nhận dữ liệu từ nguồn dữ liệu vào một dataset.

2. Sử dụng BiếnAdapter.Fill(<Biến dataset>, “Tên cho bảng”)

Page 15: 7ado_net_535

Đối tượng DataSetĐối tượng DataSet

1. Chức năng:• Dataset là một lớp dùng để thao tác với dữ liệu theo

mô hình dữ liệu phi kết nối. Nó được coi như là một kho chứa các bảng (table). Người dùng có thể thay đổi dữ liệu trong các bảng này và khi thực sự muốn cập nhật vào Cơ sở dữ liệu thì DataSet sẽ thực hiện cập nhật thông qua lớp DataAdapter

• Các bảng trong DataSet có thể do DataAdapter Fill vào hoặc cũng có thể là các bảng được tạo thành từ lớp DataTable

2. Khai báo Adapt.Fill(<Biến dataset>, “Tên cho bảng”)

Page 16: 7ado_net_535

Đối tượng DataSetĐối tượng DataSet

01

2

DataSet Object

Adapter

Page 17: 7ado_net_535

Đối tượng DataTable

0

1

2

DataSet Object

DataTable

Page 18: 7ado_net_535

Đối tượng DataTable

DataRow

DataColumn

Page 19: 7ado_net_535

Đối tượng DataTable

DataTable có mối quan hệ với DataSet

DataTable là một phần của DataSet (DataSet chứa DataTable)

DataTable có thể sử dụng một cách độc lập

Page 20: 7ado_net_535

SqlParameter

1.1. Chức năngChức năng: Sử dụng đối tượng SqlParameter để truyền giá trị (lấy từ textbox, có sẵn…) vào cho các tham số ứng với câu lệnh SQL hay thử thục nội tại (StoredProcedure).

2.2. Chú ýChú ý: Chỉ sử dụng đối tượng này nếu câu lệnh SQL hay StoredProcedure có tham số

Page 21: 7ado_net_535

SqlParameter

3.3. Thuộc tínhThuộc tính:• ParameterName: Tên của tham số• SqlDbType: kiểu dữ liệu• DbType: Kiểu dữ liệu• SqlValue: Giá trị truyền vào• Value: Giá trị truyền vào

Page 22: 7ado_net_535

Làm việc với CSDL

Page 23: 7ado_net_535

Làm việc với CSDL

Một số thao tác:a. Lấy tên Server.

b. Lấy tên các CSDL

c. Tạo CSDL

d. Liệt kê danh sách Stored Procedure

e. Tạo Stored Procedure

f. Xóa StoredProcedure

g. …….

Page 24: 7ado_net_535

Làm việc với CSDL

Một số thao tác: Lấy tên Server.

Lấy tên các CSDL

Server sv = new Server();string strTenServer=sv.Name;

Server sv = new Server(); //Lấy ra tên các Database cụ thể foreach (Database db in sv.Databases) { lstView.Items.Add(db.Name); }

Page 25: 7ado_net_535

Làm việc với CSDL

Một số thao tác:Tạo CSDL

Liệt kê danh sách Stored Procedure

Database db = new Database(sv, "DBTM"); db.Create();

sv.Databases[“CSDLTK5L”]; foreach (StoredProcedure sp in db.StoredProcedures) { lstView.Items.Add(sp.Name); }

Page 26: 7ado_net_535

Làm việc với CSDL

Một số thao tác:Tạo Stored Procedure

Server sv1 = new Server(); Database db = sv1.Databases["CSDLTK5L"]; // StoredProcedure sp = new StoredProcedure(db, "ABC"); sp.TextMode = false; sp.AnsiNullsStatus = false; StoredProcedureParameter spm = new StoredProcedureParameter(sp, "@Bien"); spm.DataType = DataType.NVarChar(20); sp.Parameters.Add(spm); sp.TextBody = "Select * from tbSinhVien"; sp.Create();