1. Trang chủ
  2. » Luận Văn - Báo Cáo

(TIỂU LUẬN) tiểu luận môn học lập TRÌNH HƯỚNG đối TƯỢNG đề tài tìm HIỂU về ADO NET

31 6 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

Tiêu đề Tìm Hiểu Về ADO.NET
Tác giả Lê Nguyễn Ngọc Hiệp
Người hướng dẫn Th.S Nguyễn Văn Thọ
Trường học Trường Đại Học Ngân Hàng Thành Phố Hồ Chí Minh
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại tiểu luận
Năm xuất bản 2021
Thành phố Hồ Chí Minh
Định dạng
Số trang 31
Dung lượng 1,86 MB

Cấu trúc

  • 2. Đặc điểm (4)
  • 3. Các thư viện truy xuất CSDL trong ADO.NET (6)
  • 4. Những loại ứng dụng nào sử dụng ADO.NET (7)
  • II. Kiến trúc ADO.NET (7)
    • 1. Data Provider (8)
    • 2. DataSet (15)
  • III. Kết nối ADO.NET với các cơ sở dữ liệu (23)
    • 1. ADO.NET kết nối với SQL Server Database (23)
    • 2. ADO.NET kết nối với Oracle Database (23)
  • IV. Thao tác SQL Server với C# [ADO.NET] (24)
    • 1. Truy xuất dữ liệu từ SQL Server bằng ADO.NET (24)
    • 2. Thêm dữ liệu vào SQL Server bằng ADO.NET (25)
    • 3. Xóa dữ liệu khỏi SQL Server bằng ADO.NET (26)
  • V. Data Source Configuration Wizard (27)
  • VII. Tổng kết (30)

Nội dung

Đặc điểm

ADO.NET là một thành phần quan trọng của NET Framework, cung cấp thư viện lớp để thao tác dữ liệu trong ngôn ngữ MS.NET ADO.NET hoạt động theo mô hình "Disconnected", cho phép người dùng truy xuất cấu trúc dữ liệu phức tạp từ cơ sở dữ liệu, sau đó ngắt kết nối để thực hiện các thao tác xử lý Trong khi đó, ADO yêu cầu duy trì kết nối liên tục trong suốt quá trình làm việc.

 Môi trường “connected” : Mỗi user có một kết nối cố định tới data source là những đối tượng giao tiếp trực tiếp với CSDL

+ Môi trường được bảo vệ tốt + Kiểm soát được sự đồng bộ + Dữ liệu luôn được mới

+ Phải có một kết nối mạng cố định + Khả năng mở rộng

Một tập con của dữ liệu trung tâm được sao chép và bổ sung một cách độc lập, sau đó được hợp nhất trở lại vào dữ liệu trung tâm Điều này cho phép người dùng làm việc với dữ liệu ở chế độ offline khi đã ngắt kết nối với cơ sở dữ liệu.

+ Có thể làm việc bất cứ lúc nào, cũng như có thể kết nối bất kỳ vào Data Source + Cho phép user khác có thể kết nối

+ Nâng cao hiệu suất thực hiện của ứng dụng

Dữ liệu không được cập nhật nhanh chóng có thể dẫn đến tranh chấp cần được giải quyết Giải pháp kết hợp những ưu điểm của ADO với một thiết kế mới hoàn toàn, đồng thời dựa vào XML, chuẩn giao tiếp dữ liệu phổ biến nhất trên Internet hiện nay.

+ Hướng đối tượng: Đặc trưng của thư viện NET Framework Đặc điểm ADO ADO.NET

Data xử lý được Recordset : tương đương 1 bảng dữ liệu trong database Dataset : tương đương 1 database đưa vào bộ nhớ dưới dạng

Duyệt dữ liệu Recordset chỉ cho phép duyệt tuần tự, từng dòng một

Dataset : duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng, dòng, cột mong muốn

Dữ liệu ngắt kết nối

Recordset thiên về hướng kết nối, nên việc hỗ trợ ngắt kết nối không mạnh

Dataset hỗ trợ hoàn toàn ngắt kết nối

Trao đổi dữ liệu qua Internet

Khả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế Do dùng chuẩn COM

ADO.NET hỗ trợ việc trao đổi dữ liệu qua Internet một cách dễ dàng nhờ vào việc tuân thủ chuẩn XML, chuẩn dữ liệu chủ yếu được sử dụng trong các giao tiếp trực tuyến.

Các thư viện truy xuất CSDL trong ADO.NET

There are numerous types of databases available today, including Microsoft SQL Server, Microsoft Access, Oracle, Borland Interbase, and IBM DB2, along with specific access libraries for each.

+ System.Data.OleDb: Access, SQL Server, Oracle + System.Data.SqlClient: SQL Server

+ Về mặt giao tiếp lập trình ứng dụng, cả 3 thư viện trên không khác biệt nhau nhiều

+ Dùng thư viện System.Data.SqlClient sẽ truy xuất SQL Server nhanh hơn System.Data.OleDb

+ Dùng thư viện System.Data.OracleClient sẽ truy xuất Oracle nhanh hơn System.Data.OleDb

Những loại ứng dụng nào sử dụng ADO.NET

ADO.NET là công nghệ mạnh mẽ cho phép phát triển mọi loại ứng dụng NET Bạn có thể sử dụng ADO.NET để tương tác hiệu quả với các nguồn dữ liệu trong nhiều ứng dụng khác nhau.

 ASP.NET Web Form Applications

 ASP.NET Web API Applications

Kiến trúc ADO.NET

Data Provider

Các nhà cung cấp dữ liệu trong NET Framework hỗ trợ việc kết nối với cơ sở dữ liệu, nơi không thể thực thi mã C# mà chỉ hiểu SQL Để ứng dụng NET có thể truy xuất dữ liệu hoặc thực hiện các thao tác như chèn, cập nhật, và xóa từ ứng dụng vào cơ sở dữ liệu, cần có sự tương tác với các câu lệnh SQL.

 Chuẩn bị câu lệnh SQL

 Lấy kết quả và hiển thị chúng trong ứng dụng

Phần kết nối: sử dụng khi kết nối CSDL và thao tác dữ liệu, phải thực hiện kết nối khi thao tác

 Connection: quản lý việc đóng mở DataBase

+ ConnectionString: loại Data Source cần kết nối

+ Open(): thiết lập kết nối đến Data Source

+ Close(): ngắt kết nối đến Data Source – Sau đây là một số phương thức quan trọng của SqlConnection:

+ BeginTransaction: Nó được sử dụng để bắt đầu một transaction với cơ sở dữ liệu và trả về một đối tượng đại diện cho transaction mới

+ ChangeDatabase(string database): Nó được sử dụng để thay đổi cơ sở dữ liệu hiện tại cho một SqlConnection đang mở

+ ChangePassword(string connectionString, string newPassword): Thay đổi mật khẩu SQL Server cho người dùng được chỉ định trong chuỗi kết nối thành mật khẩu mới được cung cấp

Phương thức Close() được sử dụng để đóng kết nối với cơ sở dữ liệu, là cách tối ưu nhất để kết thúc bất kỳ kết nối nào đang mở.

+ CreateCommand(): Nó tạo và trả về một đối tượng

System.Data.SqlClient.SqlCommand được liên kết với System.Data.SqlClient.SqlConnection

+ GetSchema(): Nó trả về thong tin lược đồ cho nguồn dữ liệu của

The Open() method is utilized to establish a database connection using the property settings specified by the System.Data.SqlClient.SqlConnection.ConnectionString.

SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = “server= \\SQLEXPRESS; databaseaBase; Trusted_Connection=true”; cnn.Open();

//xử lý trong quá trình kết nối

Tên servername là địa chỉ IP hoặc tên của server mà bạn muốn kết nối Nếu server đó là máy của bạn, bạn có thể sử dụng "server=." để thay thế.

+ databasename: Là tên của database mà bạn chọn để kết nối trong server đã khai báo trước đó

+ integrated security = true: Ở đây sử dụng quyền truy cập của window để truy cập vào SQL Server

OleDbConnection cnn = new OleDbSqlConnection(); cnn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source =Sinhvien.mdb”; cnn.Open();

//xử lý trong quá trình kết nối … cnn.Close();

 Command: lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối

ADO.NET's SqlCommand in C# is utilized for storing and executing SQL commands against a SQL Server database The SqlCommand class inherits from the DbCommand class and implements the ICloneable interface.

– SqlCommand trong C# cung cấp các Thuộc tính sau:

+ Connection: kết nối để thực hiện lệnh

+ CommandText: câu lệnh cần thực hiện

+ CommandType: loại câu lệnh (Text,TableDirect, StoredProc)

+ tác động (Insert, Update, Delete…) – SqlCommand trong C# cung cấp các phương thức sau

+ BeginExecuteNonQuery(): Phương thức này bắt đầu thực thi không đồng bộ câu lệnh Transact-SQL hoặc thủ tục được lưu trữ mô tả bởi System.Data.SqlClient.SqlCommand này

+ Cancel(): Phương thức này được dùng để hủy bỏ việc thực thi

+ Clone(): Phương thức này tạo một đối tượng

System.Data.SqlClient.SqlCommand mới, là bản sao của bản hiện tại

+ CreateParameter(): Phương thức này tạo mới một đối tượng

+ ExecuteReader(): Phương thức này gửi

System.Data.SqlClient.SqlCommand.CommandText tới System.Data.SqlClient.SqlCommand.Connection và xây dựng một System.Data.SqlClient.SqlDataReader

+ ExecuteScalar(): Phương thức này thực hiện truy vấn và trả về cột đầu tiên của hàng đầu tiên trong tập kết quả đưuọc trả về bởi truy vấn

+ ExecuteNonQuery(): Phương thức này thực thi một câu lệnh Transact-SQL và trả về số hàng bị ảnh hưởng

+ Prepare(): Phương thức này tạo một phiên bản chuẩn bị của lệnh trên một phiên bản của SQL Server

+ ResetCommandTimeOut(): Phương thức này đặt lại thuộc tính

CommandTimeOut về giá trị mặc định của nó

SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data source=.\\SQLEXPRESS;"+

"Initial Catalog=StudentDB; Integrated security=yes;

SqlCommand cmd = new SqlCommand(); cmd.CommandText = // các lệnh xử lý cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close();

The SQL command for inserting student data is structured as follows: `cmd.CommandText = "Insert into Sinhvien values(@MS,@HT,@NS,@GT,@DC,@DT)";` with parameters defined for student ID, name, birth date, gender, address, and phone number The parameters are added using `cmd.Parameters.Add()` with corresponding SQL data types, such as `SqlDbType.Int` for the student ID and `SqlDbType.NVarChar` for the name and address For instance, the values set include `@MS` as 999, `@HT` as "Nguyen Ha Giang", `@NS` as a DateTime object representing December 4, 1978, `@GT` as 1 (indicating gender), `@DC` as "Tan Binh", and `@DT` as 5120791 After opening the connection, the command executes with `cmd.ExecuteNonQuery()`, followed by closing the connection to ensure proper resource management.

 DataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm

SqlDataReader trong C# là công cụ hiệu quả để đọc dữ liệu từ cơ sở dữ liệu SQL Server, hoạt động theo cách forward-only stream Điều này có nghĩa là khi đọc một bản ghi, SqlDataReader chỉ có thể tiến tới bản ghi tiếp theo mà không thể quay lại Nó yêu cầu một kết nối mở hoặc đang hoạt động với nguồn dữ liệu trong quá trình đọc, đồng thời hoạt động ở chế độ read-only, vì vậy không thể thay đổi dữ liệu Do đó, việc đóng và mở kết nối cần được thực hiện một cách rõ ràng.

– SqlDataReader cung cấp các thuộc tính sau

+ Connection: Nhận System.Data.SqlClient.SqlConnection được liên kết với

+ Depth: Nhận một giá trị cho biết depth (độ sâu) của hàng hiện tại

+ FieldCount: Lấy số cột trong hàng hiện tại

+ HasRows: Nhận một giá trị cho biết liệu

System.Data.SqlClient.SqlDataReader có chứa một hay nhiều hay không + IsClosed: Truy xuất một giá trị Boolean cho biết liệu phiên bản

The System.Data.SqlClient.SqlDataReader indicates whether it has been closed or not Additionally, the RecordsAffected property retrieves the number of rows that have been changed, inserted, or deleted by executing a T-SQL statement.

+ VisibleFieldCount: Lấy số lượng trường trong

System.Data.SqlClient.SqlDataReader không bị ẩn

+ Item[String]:Nhận giá trị của cột được chỉ định ở định dạng gốc của nó với tên cột

+ Item[Int32]: Nhận giá trị của cột được chỉ định ở định dạng gốc của nó theo thứ tự cột – SqlDataReader cung cấp các phương thức sau:

+ Close(): Được sử dụng để đóng đối tượng SqlDataReader

+ GetBoolean (int i): Nhận giá trị của cột được chỉ định dưới dạng Boolean

+ GetByte(int i): Nhận giá trị của cột được chỉ định dưới dạng byte

+ GetChar(int i): Nhận giá trị của cột được chỉ định dưới dạng một ký tự duy nhất

+ GetDateTime(int i): Nhận giá trị của cột được chỉ định dưới dạng đối tượng

+ GetDecimal(int i): Nhận giá trị của cột được chỉ định dưới dạng đối tượng

+ GetDouble(int i): Nhận giá trị của cột được chỉ định dưới dạng số dấu phẩy động, có độ chính xác double

+ GetFloat(int i): Nhận giá trị của cột được chỉ định dưới dạng số dấu phẩy động có độ chính xác single

+ GetName(int i): Lấy tên của cột được chỉ định

+ GetSchemaTable(): Trả về một System.Data.Table mô tả metadate column của System.Data.SqlClient.SqlDataReader

+ GetValue(int i): Nhận giá trị của cột được chỉ định ở định dạng gốc của nó

+ NextResult(): Nâng cao trình đọc dữ liệu đến kết quả tiếp theo khi đọc kết quả của các câu lệnh T-SQL

+ Read(): Được sử dụng để đọc các bản ghi, trả về true nếu có nhiều hơn một hàng và ngược lại là false

SqlCommand cmd = new SqlCommand("Select * From Sinhvien", conn);

SqlDataReader reader; conn.Open(); reader = cmd.ExecuteReader(); while (reader.Read()) listBox1.Items.Add(reader["Hoten"]); reader.Close(); conn.Close();

 DataAdapter: cầu nối giữa DB và DataSet

SqlDataAdapter trong C# là cầu nối giữa DataSet và nguồn dữ liệu SQL Server, cho phép truy xuất và cập nhật dữ liệu Lớp này đại diện cho tập hợp các câu lệnh SQL và kết nối cơ sở dữ liệu, giúp điền dữ liệu vào DataSet và thực hiện các thao tác cập nhật với nguồn dữ liệu.

– SqlDataAdapter cung cấp các phương thức sau

+ CloneInternals(): Được sử dụng để tạo một bản sao của bản DataAdapter hiện tại

+ Dispose(Boolean): Được sửu dụng để giải phóng các tài nguyên không được quản lý được sử dụng bởi DataAdapter

+ Fill(Data Set): Được sử dụng để thêm các hàng trong DataSet sao cho khớp với các hàng trong nguồn dữ liệu

+ FillSchema(DataSet, SchemaType, String, IDataReader): Được sử dụng để thêm một DataTable vào DataSet được chỉ định

+ GetFillParameters(): Được sử dụng để lất các tham số do người dùng thiết lập khi thực thi câu lệnh SQL Select

+ ResetFillLoadOption(): Được sử dụng để đặt lại FillLoadOption về trạng thái mặc định của nó

+ ShouldSerializeFillLoadOption(): Xác định xem thuộc tính FillLoadOption có nên được duy trì hay không

+ ShouldSerializeTableMappings(): Xác định liệu một hoặc nhiều đối tượng

DataTableMapping có tồn tại hay không

+ Update(DataSet): Được sử dụng để gọi các câu lệnh Insert, Update hoặc Delete tương

Ví dụ: string strConn="Server=.\\SQLEXPRESS; Database=StudentDB; Trusted_connection=true";

SqlDataAdapter adapter = new SqlDataAdapter("Select * From Sinhvien", strConn);

DataSet ds = new DataSet(); adapter.Fill(ds);

DataSet

DataSet là một tập hợp con của cơ sở dữ liệu trong bộ nhớ, bao gồm nhiều bảng dữ liệu chứa dữ liệu quan hệ ở định dạng bảng Nó không phụ thuộc vào một nhà cung cấp dữ liệu cụ thể nào Khi kết nối với cơ sở dữ liệu và thực thi lệnh để truy xuất dữ liệu vào ứng dụng NET, dữ liệu có thể được lưu trữ trong DataSet, cho phép hoạt động độc lập với cơ sở dữ liệu Do đó, DataSet được sử dụng để truy cập dữ liệu từ bất kỳ nguồn dữ liệu nào và chứa một hoặc nhiều đối tượng trong DataTable.

DataSet và các lớp liên quan như DataRow, DataTable, và DataView được sử dụng để lưu trữ dữ liệu từ cơ sở dữ liệu sau khi thực thi các câu lệnh của NET Framework data providers Dữ liệu trong DataSet thường được lưu trữ trên RAM, tạo thành một cơ sở dữ liệu lưu trữ trong bộ nhớ (in-memory database).

DataSet có các thành phần con như: DataTable, DataRow, DataColumn, DataRelation

Các đối tượng nhóm như DataTableCollection, DataRowCollection và DataColumnCollection hoạt động trong cơ chế không kết nối Đối tượng DataAdapter đóng vai trò trung gian, cung cấp hỗ trợ đầy đủ cho các đặc tính XML và cho phép thao tác với tất cả các mô hình lưu trữ hiện tại.

 Flat file database: plain text, mixed text, binary text

 Hierarchical: data is organized into a tree-like structure

DataTableCollection Tables Nhận tập hợp các bảng có trong

System.Data.DataSet DataRelationCollection Relations

Nhận tập hợp các quan hệ liên kết các bảng và cho phép điều hướng từ bảng cha sang bảng con

DataColumnCollection Columns Nhận tập hợp các cột thuộc bảng này DataRowCollection Rows Nhận tập hợp các hàng thuộc bảng này

ConstraintCollection Constraints Nhận tập hợp các ràng buộc được duy trì bởi bảng này

– Các thuộc tính của DataSet trong ADO.NET

CaseSensitive là thuộc tính dùng để xác định xem các so sánh chuỗi trong các đối tượng System.Data.DataTable có phân biệt chữ hoa và chữ thường hay không Nếu thuộc tính này được đặt là true, các so sánh sẽ phân biệt chữ hoa và chữ thường; nếu không, giá trị mặc định là false sẽ được sử dụng, tức là các so sánh sẽ không phân biệt.

DefaultViewManager được sử dụng để hiển thị chế độ tùy chỉnh dữ liệu trong System.Data.Set, cho phép người dùng thực hiện các thao tác như lọc, tìm kiếm và điều hướng thông qua System.Data.DataViewManager tùy chỉnh.

+ DataSetName: Được sử dụng để lấy hoặc đặt trên của System.Data.DataSet hiện tại

EnforceConstraints là một thuộc tính quan trọng trong việc quản lý dữ liệu, cho phép người dùng lấy hoặc thiết lập giá trị để xác định xem các quy tắc ràng buộc có được tuân thủ trong quá trình thực hiện các thao tác cập nhật hay không Việc sử dụng EnforceConstraints giúp đảm bảo tính toàn vẹn của dữ liệu và ngăn chặn các lỗi phát sinh từ việc vi phạm quy tắc ràng buộc.

+ HasErrors: Được sử dụng để nhận một giá trị cho biết liệu có lỗi trong bất kì đối tượng DataTable nào trong DataSet này hay không

IsInitialized là thuộc tính dùng để xác định xem DataSet đã được khởi tạo hay chưa Nếu DataSet đã được khởi tạo, thuộc tính này sẽ trả về giá trị true; ngược lại, nếu chưa khởi tạo, nó sẽ trả về false.

+ Prefix: Được sử dụng để lấy hoặc đặt một tiền tố XML làm bí danh cho namespace System.Data.DataSet

+ Locale: Được sử dụng để lấy hoặc đặt thông tin ngôn ngữ cho việc so sánh các chuỗi trong bảng

+ Namespace: Được sử dụng để lấy hoặc đặt tên namespace của

+ Site: Được sử dụng dể lấy hoặc thiết lập một System.ComponentModel.ISite cho System.Data.DataSet

+ Relations: Được sử dụng để lấy tập hợp các quan hệ liên kết các bảng và cho phép điều hướng từ bảng mẹ sang bảng con

+ Tables: Được sử dụng để lấy tập hợp các bảng có trong System.Data.DataSet

– Các phương thức của DataSet trong ADO.NET

BeginInit() là phương thức khởi tạo System.Data.DataSet, được sử dụng trên một biểu mẫu hoặc bởi một thành phần khác Quá trình này diễn ra ngay khi ứng dụng bắt đầu chạy.

+ Clear(): Xóa DataSet của bất kỳ dữ liệu nào, bằng cách xóa tất cả các hàng trong tất cả các bảng

Clone() là phương thức dùng để sao chép cấu trúc của DataSet, bao gồm tất cả các Schema, quan hệ và ràng buộc của DataTable Tuy nhiên, phương thức này không sao chép bất kỳ dữ liệu nào.

+ Copy(): Sao chéo cả cấu trúc và dữ liệu của DataSet được chọn

+ CreateDataReader(): Trả về một DataTableReader với một tập kết quả cho mỗi DataTable, theo trình tự giống như các bảng xuất hiện trong System.Data.DataSet.Tables

+ CreateDataReader(params DataTable[] dataTables): Trả về một

System.Data.DataTableReader với một tập kết quả cho mỗi System.Data.DataTable

+ EndInit(): Nó kết thúc việc khởi tạo DataSet, được sử dụng trên một biễu mẫu hoặc được sử dụng bởi một component khác

+ GetXml(): Trả về biểu diễn XML của dữ liệu được lưu trữ trong DataSet

+ GetXmlSchema(): Trả về Schema XML cho biểu diễn XML của dữ liệu được lưu trữ trong DataSet

 Nạp dữ liệu vào DataSet từ database:

Phương thức sau sẽ kết nối đến database SQL Server, sau đó nạp hai table User và Group vào DataSet private static DataSet LoadData() { var conn = new SqlConnection(

To connect to the YinYangDB database using a trusted connection, open the SQL connection and execute a command to select all records from the Users table Utilize a SqlDataAdapter to fill a DataSet with the retrieved user data Subsequently, modify the command to select all records from the Groups table and fill the DataSet with this group data before closing the connection Finally, return the populated DataSet containing both user and group information.

Phương thức Fill(DataSet) của DataAdapter tự động sử dụng tên bảng từ CommandText để đặt tên cho DataTable Tuy nhiên, để đảm bảo tên bảng chính xác trong trường hợp có thay đổi, tôi sử dụng phương thức overload Fill(DataSet, string) để tùy chỉnh tên cho các bảng.

Instead of using Fill() to populate a DataSet, you can utilize Fill(DataTable) to create a new DataTable and then add it to the DataSet For example, you can declare a new DataTable with var table = new DataTable("Group"); then use dataAdapter.Fill(table); followed by dataSet.Tables.Add(table); to incorporate the new table into the DataSet.

Khi đặt tên cho bảng trong SQL, cần lưu ý tránh trùng với các từ khóa như "User " bằng cách sử dụng quy tắc đặt tên như thêm tiền tố hoặc sử dụng danh từ số nhiều Bên cạnh việc nạp dữ liệu từ DataTable, bạn cũng có thể tạo dữ liệu động cho DataTable thông qua các collection Columns và Rows.

 Tạo dữ liệu động cho DataTable

Kiểu dữ liệu DataColumn cung cấp đầy đủ các thuộc tính cần thiết để xây dựng mô hình dữ liệu hoàn chỉnh cho DataTable Bạn có thể tạo một cột ID với chỉ số tự động tăng bắt đầu từ 1, không cho phép giá trị null và đảm bảo tính duy nhất.

DataColumn col = new DataColumn("ID", typeof(int)); col.AllowDBNull = false; col.AutoIncrement = true; col.AutoIncrementSeed = 1; col.Unique = true;

Các DataColumn cần có tên và kiểu dữ liệu Việc thêm DataColumn vào một DataTable rỗng rất đơn giản.

Ví dụ: Tạo một DataTable với tên Persons với ba column là ID, Name và Birthday cùng với kiểu dữ liệu tương ứng là int, string và DateTime:

DataTable table = new DataTable("Persons");

Kết nối ADO.NET với các cơ sở dữ liệu

ADO.NET kết nối với SQL Server Database

Trong phần này mình có một đoạn code mẫu để kết nối với cơ sở dữ liệu SQL Server và truy xuất dữ liệu như sau:

SqlConnection connection = new SqlConnection("data source=.; database=TestDB; integrated security=true");

SqlCommand command = new SqlCommand("Select * from Customers", Connection); connection.Open();

SqlDataReader myReader = command.ExecuteReader(); while(myReader.Read()) {

Console.WriteLine("\t{0}/t{1}", myReader.GetInt32(0), myReader.GetString(1));

Để sử dụng các lớp trong việc làm việc với cơ sở dữ liệu SQL, bạn cần khai báo thư viện System.Data.SqlClient, một thư viện thiết yếu cho việc kết nối và tương tác với cơ sở dữ liệu SQL.

ADO.NET kết nối với Oracle Database

Tương tự như phần trên, ở đây mình có một đoạn code được sử dụng để kết nối với cơ sở dữ liệu Oracle:

OracleConnection connection = new OracleConnection("data source=.;database=TestDB; integrated security=true");

OracleCommand command = new OracleCommand("Select * from Customers", connection); connection.Open();

OracleDataReader myReader = command.ExecuteReader(); while (myReader.Read()) {

Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));

To communicate with OLEDB data sources such as Excel and Access, it is essential to utilize the OleDbConnection, OleDbCommand, and OleDbDataReader classes Therefore, you must include the System.Data.OleDb library to access these classes effectively.

Thao tác SQL Server với C# [ADO.NET]

Truy xuất dữ liệu từ SQL Server bằng ADO.NET

Dưới đây là đoạn code mình đã viết dùng để truy xuất dữ liệu từ SQL Server bằng ADO.NET static void Main(string[] args) { new Program().Retrieve();

SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; try

{ SqlCommand cm = new SqlCommand("Select * from student", con); con.Open();

SqlDataReader sdr = cm.ExecuteReader(); while (sdr.Read()) {

Console.WriteLine(sdr["id"] + " " + sdr["name"] + " " + sdr["email"]);

Console.WriteLine("Co loi xay ra !!!" + e);

Thêm dữ liệu vào SQL Server bằng ADO.NET

static void Main(string[] args)

SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; try

{ SqlCommand cm = new SqlCommand("insert into student (id, name, email, join_date) values ('101', 'Freetuts.net',

'Freetuts@gmail.com', '7/27/2021')", con); con.Open(); cm.ExecuteNonQuery();

Console.WriteLine("Them moi du lieu thanh cong!");

Console.WriteLine("Co loi xay ra!" + e);

Xóa dữ liệu khỏi SQL Server bằng ADO.NET

static void Main(string[] args) { new Program().Delete();

SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; try

{ SqlCommand cm = new SqlCommand("delete from student where id = '101'", con); con.Open(); cm.ExecuteNonQuery();

Console.WriteLine("Xoa thanh cong du lieu !!!");

Console.WriteLine("Co loi xay ra !!!" + e);

Data Source Configuration Wizard

Trong VS.NET 2005 có chức năng Data Source Configuration Wizard – Nhanh chóng thiết lập Data Source cho project

– Xây dựng form hiển thị và thao tác dữ liệu – Thông qua thao tác kéo thả từ Data Source – Tạo một ứng dụng Windows Application

Trong menu Data | Add New Data Source

Hoàn tất khai báo Data Source Lưu chuỗi kết nối trong file cấu hình

Chọn bảng dữ liệu Kéo thả binding control vào Form

Trong cửa sổ Data Source/Chọn bảng cần sử dụng/ Kích chọn vào dấu mũi tên xuống sau tên bảng

Thiết lập view là DataGridView hay Details

Kéo Table thả vào Form

Tự động tạo các binding control cho table

Bổ sung DataGridView cho Form

Thay đổi Table sang DataGrid Kéo Table trong Data Source thả vào Form

Tổng kết

ADO.NET là một kỹ thuật trong NET cho phép thao tác với các nguồn dữ liệu Nó cung cấp nhiều Data Provider, giúp giao tiếp với các nguồn dữ liệu khác nhau dựa trên giao thức hoặc loại cơ sở dữ liệu Người dùng không cần phải lo lắng về các chi tiết này, vì mỗi Data Provider đều hỗ trợ việc truy cập và quản lý dữ liệu một cách hiệu quả.

Provider được sử dụng cho phép bạn thao tác với các đối tượng tương tự nhau trong quá trình xử lý dữ liệu Đối tượng SqlConnection giúp bạn quản lý kết nối đến nguồn dữ liệu một cách hiệu quả.

SqlCommand allows you to send commands to the database For fast, forward-only data reading, utilize SqlDataReader If you need to work with disconnected data, use a DataSet and implement reading and writing to the data source with a SqlDataAdapter.

Dưới sự giới hạn về kiến thức, kỹ năng và thời gian, bài tiểu luận của em vẫn còn nhiều thiếu sót Em rất mong nhận được ý kiến đóng góp từ thầy để cải thiện đề tài này Em xin chân thành cảm ơn thầy!

Ngày đăng: 24/12/2023, 11:41

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w