Tổng hợp 500+ câu hỏi phỏng vấn ADO.NET
Tổng hợp những câu hỏi phỏng vấn ADO.NET mới nhất, chính xác nhất theo từng cấp bậc!
Câu hỏi phỏng vấn ADO.NET
Hãy xem các câu hỏi chúng tôi đã tổng hợp và cùng ôn luyện lại nhé!
Để tạo kết nối với cơ sở dữ liệu bằng ADO.NET, bạn cần thực hiện các bước sau:
-
Import các namespace cần thiết:
using System.Data.SqlClient; // Nếu sử dụng SQL Server using System.Data.OleDb; // Nếu sử dụng OleDb using System.Data.Odbc; // Nếu sử dụng Odbc
-
Xây dựng chuỗi kết nối cơ sở dữ liệu (connection string):
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
Trong đó,
myServerAddress
là địa chỉ máy chủ cơ sở dữ liệu,myDataBase
là tên cơ sở dữ liệu,myUsername
vàmyPassword
là thông tin đăng nhập vào cơ sở dữ liệu. -
Tạo đối tượng kết nối:
SqlConnection connection = new SqlConnection(connectionString); // Nếu sử dụng SQL Server OleDbConnection connection = new OleDbConnection(connectionString); // Nếu sử dụng OleDb OdbcConnection connection = new OdbcConnection(connectionString); // Nếu sử dụng Odbc
-
Mở kết nối:
connection.Open();
Sau khi kết nối thành công, bạn có thể thực hiện các thao tác như truy vấn dữ liệu, cập nhật dữ liệu, thêm, sửa, xóa dữ liệu trong cơ sở dữ liệu.
ADO.NET và OLEDB là hai công nghệ trong ADO.NET được sử dụng để làm việc với cơ sở dữ liệu. Dưới đây là sự khác nhau giữa chúng:
-
Mô hình lập trình: ADO.NET sử dụng mô hình lập trình không liên quan đến ngôn ngữ (language-neutral programming model) trong khi OLEDB sử dụng mô hình COM.
-
Tích hợp với ngôn ngữ: ADO.NET tích hợp tốt với .NET Framework và được sử dụng chủ yếu trong các ứng dụng viết bằng ngôn ngữ C# hoặc VB.NET. Trong khi đó, OLEDB không được tích hợp sẵn trong .NET Framework và được sử dụng chủ yếu trong các ứng dụng viết bằng ngôn ngữ C++ hoặc VB6.
-
Kiến trúc: ADO.NET sử dụng mô hình tương tác dựa trên DataSet. Dữ liệu từ cơ sở dữ liệu sẽ được lưu trữ trong các đối tượng DataSet và có thể thao tác trên đó một cách dễ dàng. Trong khi đó, OLEDB sử dụng mô hình tương tác dựa trên recordset để làm việc với dữ liệu.
-
Hiệu suất: ADO.NET thường được coi là có hiệu suất cao hơn so với OLEDB vì sử dụng các đối tượng như DataReader và DataSet để thao tác với cơ sở dữ liệu. OLEDB sử dụng recordset làm đối tượng chính để lấy dữ liệu từ cơ sở dữ liệu, do đó có thể gây ra tốn kém tài nguyên và chậm hơn so với ADO.NET.
-
Hỗ trợ cơ sở dữ liệu: ADO.NET hỗ trợ các loại cơ sở dữ liệu khác nhau thông qua các Data Provider như SQL Server, MySQL, Oracle, và OLEDB. OLEDB hỗ trợ các cơ sở dữ liệu ODBC và dựa trên ODBC drivers, do đó có thể được sử dụng với nhiều loại cơ sở dữ liệu khác nhau.
Để thực thi một truy vấn SQL đơn giản bằng ADO.NET, bạn có thể sử dụng các bước sau:
-
Tạo kết nối đến cơ sở dữ liệu bằng SqlConnection:
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDatabase;User ID=myUsername;Password=myPassword"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Thực thi truy vấn SQL }
-
Tạo một SqlCommand với truy vấn SQL cần thực thi và SqlConnection đã tạo:
string query = "SELECT * FROM MyTable"; // Truy vấn SQL đơn giản using (SqlCommand command = new SqlCommand(query, connection)) { // Thực thi truy vấn SQL và nhận dữ liệu }
-
Sử dụng SqlDataAdapter để thực hiện truy vấn và lấy dữ liệu từ kết quả truy vấn (nếu có):
using (SqlDataAdapter adapter = new SqlDataAdapter(command)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); // Sử dụng dữ liệu }
-
Đóng kết nối và giải phóng tài nguyên:
connection.Close();
Lưu ý rằng trong ví dụ trên, truy vấn SQL đơn giản là "SELECT * FROM MyTable". Bạn có thể thay đổi truy vấn SQL để phù hợp với yêu cầu của mình.
Trong ADO.NET, các ngoại lệ có thể được xử lý theo các cách sau:
- Sử dụng các khối try-catch: Bạn có thể bao bọc các phần mã có thể tạo ra ngoại lệ trong khối try-catch. Trong khối catch, bạn có thể xử lý ngoại lệ bằng cách hiển thị thông báo lỗi cho người dùng hoặc thực hiện các hành động phù hợp.
Ví dụ:
try
{
// Các phần mã có thể gây ra ngoại lệ
}
catch (Exception ex)
{
// Xử lý ngoại lệ
}
- Sử dụng đối tượng Exception: Khi một ngoại lệ xảy ra, ADO.NET tạo một đối tượng Exception tương ứng. Bạn có thể sử dụng các thuộc tính của đối tượng Exception như Message để lấy thông tin về ngoại lệ.
Ví dụ:
try
{
// Các phần mã có thể gây ra ngoại lệ
}
catch (Exception ex)
{
Console.WriteLine("Lỗi: " + ex.Message);
}
- Sử dụng câu lệnh throw: Trong trường hợp bạn muốn ném một ngoại lệ từ khối catch để thông báo cho phần mã khác, bạn có thể sử dụng câu lệnh throw.
Ví dụ:
try
{
// Các phần mã có thể gây ra ngoại lệ
}
catch (Exception ex)
{
throw new Exception("Đã xảy ra lỗi trong quá trình xử lý dữ liệu.", ex);
}
Lưu ý: Trong các ứng dụng thực tế, xử lý ngoại lệ trong ADO.NET cần được thực hiện cẩn thận để đảm bảo bảo mật và tránh rò rỉ thông tin quan trọng.
Có vài cách sử dụng các tham số trong truy vấn ADO.NET:
- Sử dụng SqlParameter: Đây là cách phổ biến nhất để sử dụng các tham số trong truy vấn ADO.NET. Bạn có thể tạo ra đối tượng SqlParameter và chỉ định tên tham số, kiểu dữ liệu, giá trị và các thuộc tính khác. Sau đó, bạn có thể thêm tham số vào SqlCommand và sử dụng nó trong truy vấn.
Ví dụ:
SqlCommand command = new SqlCommand("SELECT * FROM Customers WHERE Country = @Country", connection);
command.Parameters.AddWithValue("@Country", "USA");
- Sử dụng thuộc tính Parameters của SqlCommand: Bạn có thể sử dụng thuộc tính Parameters của SqlCommand để thêm và quản lý các tham số trong truy vấn. Bạn có thể thêm các tham số bằng cách gọi phương thức Add với tên tham số và giá trị tương ứng.
Ví dụ:
SqlCommand command = new SqlCommand("SELECT * FROM Customers WHERE Country = @Country", connection);
command.Parameters.Add("@Country", SqlDbType.NVarChar, 100).Value = "USA";
- Sử dụng các phương thức khác của SqlCommand: SqlCommand cung cấp nhiều phương thức khác nhau để thêm tham số vào truy vấn. Ví dụ, bạn có thể sử dụng phương thức AddWithValue để thêm tham số với giá trị được chỉ định.
Ví dụ:
SqlCommand command = new SqlCommand("SELECT * FROM Customers WHERE Country = @Country", connection);
command.Parameters.AddWithValue("@Country", "USA");
Lưu ý rằng cách sử dụng tham số trong truy vấn ADO.NET giúp tránh các vấn đề bảo mật như tấn công SQL injection và tăng hiệu suất truy vấn.
DataReader và DataAdapter là hai thành phần chính trong ADO.NET để thực hiện truy xuất và thao tác dữ liệu với cơ sở dữ liệu.
DataReader là một thành phần chỉ đọc dữ liệu chỉ qua một lần từ cơ sở dữ liệu. Khi sử dụng DataReader, truy vấn SQL được thực hiện để truy xuất dữ liệu từ cơ sở dữ liệu và dữ liệu được trả về theo từng hàng (row) một. DataReader nhanh hơn và tiết kiệm bộ nhớ hơn so với DataAdapter vì nó không đọc toàn bộ dữ liệu vào bộ nhớ.
DataAdapter là một thành phần linh hoạt hơn và có khả năng thực hiện các thao tác đọc, ghi, cập nhật dữ liệu giữa ứng dụng và cơ sở dữ liệu. DataAdapter sử dụng DataSet và DataTable để lưu dữ liệu trung gian, tức là chứa dữ liệu trong bộ nhớ của ứng dụng. DataAdapter thực hiện các truy vấn SQL để lấy, cập nhật, chèn hoặc xóa dữ liệu và cập nhật dữ liệu giữa ứng dụng và cơ sở dữ liệu.
DataReader thích hợp sử dụng khi cần đọc một lượng lớn dữ liệu để thực hiện các phân tích hoặc tính toán. DataAdapter thích hợp sử dụng khi cần thực hiện nhiều thao tác dữ liệu như đọc, ghi, cập nhật, và làm việc với dữ liệu offline trong DataSet.
Trong ADO.NET, bạn có thể sử dụng Transaction để thực hiện một nhóm các câu lệnh SQL như một transaction duy nhất. ADO.NET hỗ trợ hai loại transaction: Transaction Local và Transaction Distributed.
-
Transaction Local: a. Bắt đầu một transaction: Bạn có thể bắt đầu một transaction bằng cách tạo một đối tượng
SqlTransaction
hoặcOleDbTransaction
từ đối tượng kết nối tương ứng và gọi phương thứcBeginTransaction()
.SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlTransaction transaction = connection.BeginTransaction();
b. Thực hiện các câu lệnh SQL trong transaction: Bạn có thể sử dụng một đối tượng
SqlCommand
hoặcOleDbCommand
để thực thi các câu lệnh SQL trong transaction. Để thông báo rằng các câu lệnh được thực thi trong transaction, bạn cần chỉ định đối tượng transaction cho đối tượng command bằng cách gọicommand.Transaction = transaction
.SqlCommand command = new SqlCommand(sql, connection); command.Transaction = transaction; command.ExecuteNonQuery();
c. Hoàn tất hoặc hủy bỏ transaction: Sau khi thực hiện các câu lệnh SQL, bạn có thể hoàn tất transaction bằng cách gọi
transaction.Commit()
. Nếu xảy ra lỗi hoặc cần hủy bỏ transaction, bạn có thể gọitransaction.Rollback()
.transaction.Commit(); // hoặc transaction.Rollback();
-
Transaction Distributed: Nếu bạn đang sử dụng các đối tượng kết nối khác nhau và muốn thực thi một transaction trên các kết nối này, bạn có thể sử dụng transaction distributed. Để sử dụng transaction distributed, bạn cần sử dụng một transaction coordinator như
TransactionScope
class.using (TransactionScope scope = new TransactionScope()) { // Các câu lệnh SQL được thực thi trong transaction ... // Commit transaction scope.Complete(); }
Lưu ý rằng tùy thuộc vào loại cơ sở dữ liệu mà bạn sử dụng (SQL Server, Oracle, MySQL, v.v.), cú pháp sử dụng transaction có thể khác nhau.
Để lấy dữ liệu từ một Stored Procedure sử dụng ADO.NET, bạn cần thực hiện các bước sau:
- Tạo một kết nối đến cơ sở dữ liệu bằng cách sử dụng lớp SqlConnection. Ví dụ:
string connectionString = "Your connection string";
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Mở kết nối
connection.Open();
// Tạo một đối tượng SqlCommand để thực thi Stored Procedure
using (SqlCommand command = new SqlCommand("Tên Stored Procedure", connection))
{
command.CommandType = CommandType.StoredProcedure;
// (Tùy chọn) Đưa các tham số vào Stored Procedure (nếu có)
command.Parameters.AddWithValue("@Param1", value1);
command.Parameters.AddWithValue("@Param2", value2);
// Tạo một đối tượng SqlDataReader để đọc dữ liệu từ Stored Procedure
using (SqlDataReader reader = command.ExecuteReader())
{
// Đọc từng dòng dữ liệu
while (reader.Read())
{
// Lấy các giá trị từ mỗi cột bằng cách sử dụng chỉ số hoặc tên cột
var column1Value = reader["ColumnName1"];
var column2Value = reader.GetInt32(reader.GetOrdinal("ColumnName2"));
// Xử lý dữ liệu
// ...
}
}
}
}
Trong code trên:
connectionString
là chuỗi kết nối đến cơ sở dữ liệu của bạn.Tên Stored Procedure
là tên của Stored Procedure cần gọi.@Param1
,@Param2
là các tham số (nếu có) của Stored Procedure.ColumnName1
,ColumnName2
là tên các cột trong kết quả trả về của Stored Procedure.
Sau khi lấy dữ liệu từ Stored Procedure, bạn có thể xử lý nó theo nhu cầu của mình.
Dưới đây là một ví dụ về cách sử dụng ADO.NET trong ứng dụng Windows Form để thực hiện việc kết nối đến cơ sở dữ liệu SQL Server và thực hiện truy vấn dữ liệu:
-
Đầu tiên, bạn cần thêm namespace cần thiết:
using System.Data.SqlClient;
-
Tạo một đối tượng SqlConnection để kết nối đến cơ sở dữ liệu SQL Server:
string connectionString = "Data Source=(local);Initial Catalog=YourDatabase;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString);
-
Mở kết nối đến cơ sở dữ liệu:
connection.Open();
-
Thực hiện truy vấn dữ liệu bằng cách tạo một đối tượng SqlCommand và thực hiện truy vấn:
string query = "SELECT * FROM Customers"; SqlCommand command = new SqlCommand(query, connection);
-
Đọc dữ liệu từ đối tượng SqlDataReader và hiển thị nó trong ứng dụng Windows Form của bạn:
using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { string customerName = reader["CustomerName"].ToString(); // Hiển thị dữ liệu trong ứng dụng Windows Form của bạn } }
-
Sau khi hoàn thành công việc, đóng kết nối đến cơ sở dữ liệu:
connection.Close();
Trên đây là một ví dụ cơ bản về cách sử dụng ADO.NET trong ứng dụng Windows Form. Bạn có thể mở rộng và tùy chỉnh nó để phù hợp với yêu cầu của ứng dụng của bạn.
ADO.NET là một thành phần của .NET Framework được sử dụng trong việc truy cập và quản lý các dữ liệu từ các nguồn khác nhau, chẳng hạn như cơ sở dữ liệu SQL Server, Oracle, MySQL, XML, etc. ADO.NET cung cấp các lớp và phương thức để thực hiện các thao tác liên quan đến cơ sở dữ liệu như kết nối tới cơ sở dữ liệu, truy vấn, cập nhật và xử lý dữ liệu. ADO.NET còn hỗ trợ các tính năng như tự động kiểm soát tại thời gian thiết kế, tải dữ liệu đồng thời, tự động duy trì và cập nhật dữ liệu, nâng cao hiệu suất và an ninh.
ADO.NET, còn được gọi là ActiveX Data Objects .NET, là một công nghệ được sử dụng để làm việc với dữ liệu trong ứng dụng .NET. Dưới đây là một số lý do tại sao nên sử dụng ADO.NET:
-
Hiệu suất cao: ADO.NET được thiết kế để cung cấp hiệu suất cao trong việc truy xuất và xử lý dữ liệu. Nó sử dụng mô hình kết nối rõ ràng và cung cấp các phương thức tối ưu để làm việc với cơ sở dữ liệu.
-
Đa nền tảng: ADO.NET hỗ trợ nhiều nhà cung cấp cơ sở dữ liệu khác nhau, bao gồm Microsoft SQL Server, Oracle, MySQL, và nhiều hơn nữa. Điều này cho phép bạn dễ dàng chuyển đổi giữa các hệ quản trị cơ sở dữ liệu mà không cần thay đổi mã nguồn.
-
Khả năng tin cậy và bảo mật: ADO.NET cung cấp tính năng quản lý đơn giản và an toàn với việc sử dụng các đối tượng như Connection, Command, DataReader và DataSet để thực hiện các hoạt động liên quan đến cơ sở dữ liệu.
-
Hỗ trợ dễ dàng cho ứng dụng phân tán: ADO.NET hỗ trợ hoạt động với cơ sở dữ liệu từ xa thông qua các giao thức như TCP/IP và HTTP. Điều này cho phép bạn xây dựng các ứng dụng phân tán và kết nối với cơ sở dữ liệu từ xa một cách dễ dàng.
-
Hỗ trợ LINQ: ADO.NET cung cấp hỗ trợ tích hợp cho ngôn ngữ truy vấn LINQ (Language Integrated Query), cho phép bạn truy vấn dữ liệu từ cơ sở dữ liệu bằng cách sử dụng cú pháp tương tự như ngôn ngữ truy vấn của cơ sở dữ liệu.
Vì những lý do trên, ADO.NET được sử dụng rất phổ biến trong ứng dụng .NET để làm việc với cơ sở dữ liệu.
ADO.NET (ActiveX Data Objects .NET) là một công nghệ được sử dụng để kết nối và làm việc với các nguồn dữ liệu liên quan đến cơ sở dữ liệu trong môi trường .NET.
Các thành phần chính của ADO.NET bao gồm:
-
Connection (Kết nối): Đây là thành phần dùng để thiết lập kết nối tới cơ sở dữ liệu. Kết nối có thể được thiết lập thông qua các đối tượng như SqlConnection (SQL Server), OleDbConnection (CSDL OLE DB), OdbcConnection (CSDL ODBC) hoặc OracleConnection (CSDL Oracle).
-
Command (Lệnh): Đây là thành phần dùng để thực thi các truy vấn và câu lệnh tới cơ sở dữ liệu. Có các đối tượng tương ứng như SqlCommand, OleDbCommand, OdbcCommand và OracleCommand để thực hiện các lệnh SQL hoặc câu lệnh cơ sở dữ liệu khác.
-
DataReader: Đây là thành phần dùng để đọc dữ liệu từ cơ sở dữ liệu. DataReader cung cấp một cách nhanh chóng và hiệu quả để truy xuất dữ liệu từ cơ sở dữ liệu thông qua các phương thức như Read() và GetString(). DataReader được hỗ trợ bởi các đối tượng như SqlDataReader, OleDbDataReader, OdbcDataReader và OracleDataReader.
-
DataAdapter: Đây là thành phần dùng để truyền dữ liệu giữa cơ sở dữ liệu và DataSet. DataAdapter được sử dụng để thực hiện các hoạt động như lấy dữ liệu từ cơ sở dữ liệu, cập nhật dữ liệu trong cơ sở dữ liệu và đồng bộ dữ liệu giữa DataSet và cơ sở dữ liệu. Có các đối tượng tương ứng như SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter và OracleDataAdapter.
-
DataSet: Đây là thành phần dùng để lưu trữ dữ liệu trong bộ nhớ tạm thời và làm việc với dữ liệu ngoại trừ cơ sở dữ liệu. DataSet là một cấu trúc dữ liệu phẳng và không phụ thuộc vào hệ quản trị cơ sở dữ liệu cụ thể. Nó cung cấp các đối tượng như DataTable (bảng dữ liệu), DataRow (dòng dữ liệu) và DataColumn (cột dữ liệu) để làm việc với dữ liệu.
Các thành phần trên là những thành phần chính của ADO.NET và được sử dụng để tạo kết nối, truy vấn và làm việc với dữ liệu trong môi trường .NET.
ADO.NET và OLE DB là hai công nghệ quan trọng trong việc làm việc với cơ sở dữ liệu trong ADO.NET. Dưới đây là một số điểm khác nhau giữa ADO.NET và OLE DB:
-
Mô hình lập trình: ADO.NET được thiết kế lại hoàn toàn dựa trên .NET Framework và sử dụng các đối tượng như DataSet, DataReader và DataAdapter để làm việc với dữ liệu. Trong khi đó, OLE DB sử dụng một mô hình lập trình COM và giao diện IRowset.
-
Khả năng linh hoạt: ADO.NET hỗ trợ nhiều loại cơ sở dữ liệu, bao gồm cả cơ sở dữ liệu quan hệ, cơ sở dữ liệu XML và các dịch vụ web. Trong khi đó, OLE DB chỉ hỗ trợ cơ sở dữ liệu quan hệ.
-
Hiệu suất: ADO.NET được tối ưu hóa cho hiệu suất cao và sử dụng máy chủ SQL Server để thực thi các câu truy vấn trên cơ sở dữ liệu. Trong khi đó, OLE DB sẽ chạy trên máy khách và thực hiện trực tiếp các câu truy vấn trên cơ sở dữ liệu.
-
Sử dụng tài nguyên: ADO.NET sử dụng các tài nguyên như DataSet để lưu trữ dữ liệu tạm thời và duy trì một kết nối mở với cơ sở dữ liệu. Trong khi đó, OLE DB sử dụng tài nguyên mạnh mẽ hơn như Recordset và Connection để duy trì kết nối và lưu trữ dữ liệu.
Tổng quan, ADO.NET là công nghệ được thiết kế lại hoàn toàn cho .NET Framework và mang lại nhiều lợi ích hơn so với OLE DB, như tính linh hoạt và hiệu suất cao hơn.
Để kết nối đến CSDL SQL Server trong ADO.NET, bạn cần sử dụng các đối tượng trong namespace System.Data.SqlClient. Dưới đây là các bước thực hiện:
- Tạo đối tượng SqlConnection: Đầu tiên, bạn cần tạo một đối tượng SqlConnection để kết nối đến CSDL SQL Server. Bạn cần cung cấp chuỗi kết nối (connection string) chứa thông tin về server, tên CSDL, tên đăng nhập, mật khẩu vv.
string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password";
SqlConnection connection = new SqlConnection(connectionString);
- Mở kết nối: Sau khi tạo đối tượng SqlConnection, bạn cần mở kết nối bằng cách gọi phương thức Open().
connection.Open();
- Thực thi truy vấn: Bạn có thể sử dụng đối tượng SqlCommand để thực thi các truy vấn SQL.
string query = "SELECT * FROM your_table";
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader = command.ExecuteReader();
- Xử lý kết quả: Dùng đối tượng SqlDataReader để lấy dữ liệu từ kết quả truy vấn.
while (reader.Read())
{
// Lấy dữ liệu từ reader
}
- Đóng kết nối: Cuối cùng, sau khi hoàn tất công việc, bạn cần đóng kết nối bằng cách gọi phương thức Close().
reader.Close();
connection.Close();
Chú ý rằng bạn cần bắt và xử lý các ngoại lệ (exception) có thể xảy ra trong quá trình kết nối và thực hiện truy vấn.
Để thực hiện truy vấn SQL sử dụng ADO.NET, bạn có thể làm theo các bước sau:
- Tạo một kết nối đến cơ sở dữ liệu bằng cách sử dụng SqlConnection. Kết nối này cung cấp thông tin về cơ sở dữ liệu, chẳng hạn như chuỗi kết nối.
Ví dụ:
string connectionString = "Data Source=ten_server;Initial Catalog=ten_database;User Id=ten_user;Password=mat_khau";
SqlConnection connection = new SqlConnection(connectionString);
- Mở kết nối với cơ sở dữ liệu bằng cách sử dụng phương thức Open().
Ví dụ:
connection.Open();
- Tạo một SqlCommand object để chứa truy vấn SQL. Bạn có thể sử dụng các tham số để truyền giá trị vào truy vấn.
Ví dụ:
string sqlQuery = "SELECT * FROM Customers WHERE Country = @Country";
SqlCommand command = new SqlCommand(sqlQuery, connection);
command.Parameters.AddWithValue("@Country", "Vietnam");
- Thực hiện truy vấn bằng cách sử dụng ExecuteReader() để trả về một SqlDataReader object hoặc ExecuteNonQuery() để thực hiện truy vấn không trả về bất kỳ dữ liệu nào.
Ví dụ:
SqlDataReader reader = command.ExecuteReader();
- Đọc dữ liệu từ SqlDataReader bằng cách sử dụng các phương thức như Read() để di chuyển qua từng bản ghi và GetString(), GetInt32() để truy cập vào các cột.
Ví dụ:
while (reader.Read())
{
string name = reader.GetString(0);
int age = reader.GetInt32(1);
Console.WriteLine("Name: {0}, Age: {1}", name, age);
}
- Đóng kết nối tới cơ sở dữ liệu bằng cách sử dụng phương thức Close().
Ví dụ:
connection.Close();
Lưu ý rằng trên cơ sở dữ liệu SQL Server, bạn cũng có thể sử dụng SqlDataAdapter và DataSet để thực hiện việc truy vấn dữ liệu.
Có hai cách để thực hiện transaction trong ADO.NET:
- Sử dụng lớp
SqlTransaction
: Đây là cách truyền thống để thực hiện transaction trong ADO.NET. Bạn có thể tạo một đối tượngSqlConnection
, mở kết nối và bắt đầu mộtSqlTransaction
từ đối tượng kết nối đó. Sau đó, bạn có thể thực hiện các câu lệnh SQL bên trong transaction bằng cách sử dụng một đối tượngSqlCommand
và gọiCommit
để lưu các thay đổi hoặcRollback
để hủy bỏ các thay đổi.
Ví dụ:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
try
{
// Thực hiện các câu lệnh SQL bên trong transaction
SqlCommand command1 = new SqlCommand("INSERT INTO table1 VALUES ...", connection);
command1.Transaction = transaction;
command1.ExecuteNonQuery();
SqlCommand command2 = new SqlCommand("UPDATE table2 SET ...", connection);
command2.Transaction = transaction;
command2.ExecuteNonQuery();
// Lưu thay đổi
transaction.Commit();
}
catch (Exception ex)
{
// Xảy ra lỗi, hủy bỏ các thay đổi
transaction.Rollback();
Console.WriteLine(ex.Message);
}
}
- Sử dụng
TransactionScope
: Đây là một cách tiện lợi hơn để thực hiện transaction trong ADO.NET từ phiên bản .NET Framework 2.0 trở lên.TransactionScope
tự động quản lý transaction và cho phép chúng ta xác định điểm cuối cùng để lưu các thay đổi hoặc hủy bỏ các thay đổi. Mọi hành động trongTransactionScope
sẽ được xoay quanh một transaction ẩn.
Ví dụ:
using (TransactionScope scope = new TransactionScope())
{
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// executing SQL commands within the transaction
SqlCommand command1 = new SqlCommand("INSERT INTO table1 VALUES ...", connection);
command1.ExecuteNonQuery();
SqlCommand command2 = new SqlCommand("UPDATE table2 SET ...", connection);
command2.ExecuteNonQuery();
}
// Saving changes
scope.Complete();
}
catch (Exception ex)
{
// An error occurred, changes will be rolled back
Console.WriteLine(ex.Message);
}
}
Các câu hỏi phỏng vấn C#/.Net - Phỏng vấn IT - PhongvanIT.com
2 days ago 119 câu hỏi phỏng vấn C#/.Net. 1. Sự khác nhau giữa static readonly và const? basic. 15.532 lượt xem. 2. Sự khác nhau giữa các lớp Trace và Debug? basic. 10.377 lượt xem.
› Tạo Tài Khoản Ngay
PhongvanIT.com là nền tảng cung cấp các thông tin để bạn có thể ôn luyện, củng …
Bộ câu hỏi phỏng vấn ADO.NET dành cho lập trình viên
3 days ago 32. Hãy nêu một số vấn đề có thể xảy ra với việc... Xem câu trả lời. 33. Trong những tình huống nào thì việc thiết lập pooling=false t... Xem câu trả lời. Tổng hợp 33 câu hỏi phỏng vấn adonet …
Top 10+ Câu Hỏi Phỏng Vấn C# Được Hỏi Nhiều Nhất
1 week ago Lập trình OPP là lập trình hướng đối tượng, bao gồm 4 tính chất như sau: 1. Tính đóng gói 2. Tính kế thừa 3. Tính đa hình 4. Tính trừu tượng
› 4/5 (5)
› Published: Jan 4, 2023
Tổng hợp 500+ câu hỏi phỏng vấn C#/.Net - Phong-Van.com
1 week ago Jun 8, 2023 · Tìm hiểu về ADO.NET và Entity Framework trong C#? ... Phong-Van.Com. Phong-Van.com Blogs - Giáo dục - Tin ... TOP 23+ câu hỏi … 444. Top 15+ Câu Hỏi Phỏng Vấn …
Phong-Van.com
5 days ago Tổng hợp 10000+ các câu hỏi phỏng vấn. Phong-Van.com là nền tảng cung cấp các thông tin để bạn có thể rèn luyện, củng cố kiến thức, chuẩn bị tốt cho buổi phỏng vấn sắp tới, tăng cao cơ …
Top 54 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất
1 week ago 3 days ago · Top 54 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất - Phần 1. Chuyên mục : Phỏng vấn - 2024-11-15 18:30:02 - 296388 lượt xem. Tổng hợp các câu hỏi phỏng vấn …
ADONET là gì - Câu hỏi phỏng vấn ADO.NET - KungFuTech
1 week ago ADO.NET là gì? Đánh dấu hoàn thành. Câu trả lời. ADO.NET là một tập hợp các thư viện lớp được cung cấp bởi Microsoft, cho phép các ứng dụng tương tác với các nguồn dữ liệu như …
Tổng hợp 500+ câu hỏi phỏng vấn .Net Core - Phong-Van.com
2 days ago Những Câu Hỏi Phỏng Vấn Với C# .NET Thường Gặp. 1 day ago May 20, 2020 · Phương thức. Ý nghĩa. ToString () Trả về kiểu chuỗi của đối tượng (chuyển từ kiểu dữ liệu nào đó về kiểu …
[Phần 1] 30 câu hỏi phỏng vấn thường gặp và cách trả lời
1 week ago Aug 6, 2020 · Một thành tựu mà bạn tự hào nhất. Một trong những cách trả lời tốt nhất cho câu hỏi này là áp dụng phương pháp STAR: Tình huống – Nhiệm vụ – Hành động – Kết quả. Chia …
Top 40 Câu Hỏi Tình Huống, Hành Vi trong Phỏng Vấn phổ biến
4 days ago Mar 9, 2022 · Top các câu hỏi tình huống hành vi phổ biến trong phỏng vấn. 1. Nhóm câu hỏi về kỹ năng làm việc nhóm. 2. Nhóm câu hỏi về xử lý tình huống bất ngờ với khách hàng. 3. …
Những câu hỏi phỏng vấn IT Ngôn ngữ .NET Core - ITDEV
1 week ago Feb 25, 2023 · 0. 51 câu hỏi phỏng vấn .NET Core. 1. . NET Standard là gì? .NET Standard là một đặc tả chính thức của các .NET APIs với mục đích có sẵn trên tất cả các triển khai .NET.
Top 40+ câu hỏi phỏng vấn Mobile Developer phổ biến
1 day ago Nov 12, 2024 · Top 50+ câu hỏi phỏng vấn OOP và trả lời mới nhất (Phần 2) Các câu hỏi phỏng vấn Mobile Developer cụ thể cho hệ điều hành iOS ... Flutter cung cấp bộ widget phong phú, …
Các câu hỏi phỏng vấn tìm việc làm thường gặp | VietnamWorks
2 days ago Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh: "My former colleague / manager helped and guided me a lot during my time at company X. Although disagreements were inevitable at …
Top 30+ câu hỏi phỏng vấn Android developer thường ... - Devwork
1 week ago Nov 4, 2022 · The Single Responsibility Principle (SRP) The Open - Closed Principle (OCP) The Liskov Substitution Principle (LSP) The Interface Segregation Principle (ISP) The Dependency …
TOP Câu Hỏi Phỏng Vấn Thường Gặp Nhất Ứng Viên Cần Biết
1 week ago Câu Hỏi Về Mức Độ Thành Thạo Tin Học Văn Phòng. Khi nhà tuyển dụng hỏi các câu hỏi phỏng vấn thường gặp về mức độ thành thạo các công cụ tin học văn phòng, họ đang muốn biết bạn …
FAQs - Câu hỏi thường gặp về phỏng vấn?
Những câu hỏi thường gặp để phản ánh chính sách và quy trình cụ thể của bạn hoặc để phù hợp với mục đích cụ thể của phỏng vấn.