Truy cập cơ sở dữ liệu qua C# ADO.NET
phần 2
Chạy Visual C# 2008 Express Edition
Bạn có thể chạy Visual C# 2008 Express Edition từ menu
Start c
ủa Windows. Khi IDE mở, chọn Tools > Connect to
Database
từ menu. Thao tác này của bạn sẽ mở ra hộp thoại
như t
hể hiện trong hình 8.
Lưu ý: Lần đầu tiên khi chạy lệnh này, hộp thoại sẽ được gọi
là Choose Data Source. Khi bạn đã kết nối với nguồn dữ liệu,
hộp thoại sẽ trở thành Change Data Source, xem thể hiện
trong hình 8.
Hình 8: Kết nối đến nguồn dữ liệu
Chọn nguồn dữ liệu, nếu cần, kích OK. Trong hộp thoại tiếp
theo (Add Connection), nhập vào đường dẫn đến file
pubs.mdf. Trên hệ thống chúng tôi, đường dẫn mặc định như
thể hiện bên dưới:
C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data
Ch
ọn file, kích Open, sau đó kích OK. Nguồn dữ liệu pubs sẽ
xuất hiện, xem thể hiện trong hinh 9.
Hình 9: Truy cập thành công vào cơ sở dữ liệu từ bên trong
Visual C# 2008 Express Edition
Lúc này b
ạn có thể tương tác với cơ sở dữ liệu pubs giống như
những gì bạn có thể thực hiện với SQL Server Management
Studio Express.
Ti
ếp đến, chúng ta sẽ truy cập vào cơ sở dữ liệu bằng mã C#.
Truy cập cơ sở dữ liệu với code C#
Trước khi chạy mã C#, bạn phải hủy kết nối với cơ sở dữ liệu
pubs. Để thực hiện điều n
ày trong Visual C# 2008 Express
Edition, kích chu
ột phải vào cơ sở dữ liệu pubs và chọn
Detach Database. Nếu không thực hiện thao tác này, khi
ch
ạy mã C# bạn có thể nhận thông báo lỗi như thể hiện trong
hình 10.
Hình 10: Một vấn đề chung – quá nhiều kết nối
Giờ đây chúng ta đã remove tất cả các kết nối với cơ sở dữ
liệu pubs, hãy chạy mã C# mà bạn đã download được để nhận
kết quả đầu ra như thể hiện trong hình 11.
Hình 11: Truy hồi dữ liệu thành công
Hình 11 th
ể hiện mã truy cập cơ sở dữ liệu trọn vẹn của nó.
Trông có vẻ như rất phức tạp nhưng thực sự không phải như
vậy. Trong một nutshell, một số tham số được đọc từ một file
có tên App.config sau đó một kết nối sẽ được thực hiện đến
cơ sở dữ liệu. Dữ liệu y
êu cầu sẽ được truy lại từ cơ sở dữ liệu
và được hiển thị một h
àng.
Đoạn mã 1 - Code truy cập cơ sở dữ liệu
// Get metadata from App.config file
string dbProvider =
ConfigurationManager.AppSettings["dbProvider"];
string connectionString =
ConfigurationManager.ConnectionStrings["SqlConnStringPu
bs"].
ConnectionString;
// Create a factory provider
DbProviderFactory dbProviderFactory =
DbProviderFactories.GetFactory(dbProvider);
// Create a connection object
DbConnection dbConnection =
dbProviderFactory.CreateConnection();
Console.WriteLine("Connection object: {0}",
dbConnection.GetType().FullName);
dbConnection.ConnectionString = connectionString;
dbConnection.Open();
Console.WriteLine("Connection string: {0}",
dbConnection.ToString());
// Create a command object.
DbCommand cmd = dbProviderFactory.CreateCommand();
Console.WriteLine("Command object: {0}",
cmd.GetType().FullName);
cmd.Connection = dbConnection;
cmd.CommandText = "Select * From Authors";
// Create a data reader.
DbDataReader dbDataReader =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
Console.WriteLine("Data reader object: {0}",
dbDataReader.GetType().FullName);
Console.WriteLine("Command " + cmd.CommandText);
while (dbDataReader.Read())
Console.WriteLine("Row data: {0}, {1}",
dbDataReader["au_lname"], dbDataReader["au_fname"]);
dbDataReader.Close();
Lưu ý rằng ở cuối đoạn mã 1, đoạn mã đã tạo các tham chiếu
đến các cột cơ sở dữ liệu["au_lname"] và ["au_fname"]. Để
hiểu được lý do tại sao lại có điều đó, bạn hãy quan sát các cột
trong bảng authors được liệt kê bên trái panel của hình 12. Mã
C# đang hiển thị là một tập nhỏ dữ liệu từ bảng này.
Hình 12: Các cột trong bảng authors
Đoạn m
ã 2 thể hiện nội dung của file cấu hình App.config.
Đoạn mã 2 - File metadata ngoài
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="dbProvider" value="System.Data.SqlClient"
/>
</appSettings>
<connectionStrings>
<add name ="SqlConnStringPubs"
connectionString ="Server=.\SQLExpress;
AttachDbFilename=C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\pubs.mdf;Database=dname;
Trusted_Connection=Yes;"/>
</connectionStrings>
</configuration>
Các thi
ết lập trong đoạn mã 2 thể hiện các chi tiết nhà cung
c
ấp cơ sở dữ liệu và thông tin kết nối được yêu cầu để truy
cập SQLEXPRESS instance. Lưu ý các phần có từ add. Các
mục dữ liệu này được tham chiếu trực tiếp trong mã C# trong
quá trình ch
ạy, xem lại trong đoạn mã 1.
Đến đây quá trình chúng ta đã hoàn tất một tua về ADO.NET.
Kết luận
Microsoft cung cấp khá nhiều công cụ phong phú cho việc
phát triển cơ sở dữ liệu trung tâm trên nền tảng .NET. SQL
Server 2005 Express Edition được thiết kế cho việc quản lý
các database instance ở mức khá cao. Còn nếu muốn can thiệp
vào các công việc bên trong của một cơ sở dữ liệu nào đó, bạn
có thể sử dụng ứng dụng SQL Server Management Studio
Express và Visual C# 2008 Express Edition IDE với các tính
năng bổ sung. Bằng cách sử dụng sự kết hợp các công cụ n
ày,
b
ạn có thể quản trị và phát triển một cách hiệu quả các giải
pháp cơ sở dữ liệu C# tập trung.
Với các công cụ cơ sở dữ liệu hữu dụng này, cơ sở dữ liệu
mẫu có thể được download một cách dễ dàng. Bạn có thể sử
dụng các cơ sở dữ liệu này để phát triển cơ sở dữ liệu của
mình một cách nhanh chóng. Bên cạnh đó, sử dụng mã C# để
truy cập một cơ sở dữ liệu ADO.NET khá đơn giản. Chỉ cần
một file C# và một file cấu hình, còn lại nhiều mã ẩn bên dưới
background rất phức tạp mà bạn không cần biết đến. Chính sự
trừu tượng của các chi tiết kỹ thuật về kết nối cơ sở dữ liệu là
nh
ững gì làm cho ADO.NET mạnh đến vậy.
Trong bài viết này, chúng tôi đã tập trung hầu hết vào việc
thiết lập các công cụ này cho đúng cách. Mã truy cập cơ sở dữ
liệu cài đặt rất đơn giản; mọi thứ chỉ phức tạp hơn khi bạn
muốn thay đổi cơ sở dữ liệu. Tuy nhiên sự đơn giản hóa của
ADO.NET sẽ giúp đỡ bạn rất nhiều trong lĩnh vực này.