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 9: Truy cập thành công vào cơ sở dữ liệu từ bên trong Visual C# 2008 Ex
Trang 1Truy 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ư thể 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:
Trang 2C:\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
Trang 3Detach 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ư
Trang 4vậ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);
Trang 5cmd.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
Trang 6Hì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>
Trang 7Cá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
Trang 8muố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