Trước khi các máy tính mini và các PC xuất hiện, thế giới CNTT đơn giản hơn rất nhiều.
Thời gian đó người ta cho rằng chỉ có các tổ chức rất lớn mới cần đến công nghệ máy
tính. Tuy nhiên một vài năm đây, tất cả chúng ta đều có thể sở hữu những chiếc điện
thoại di động với sức mạnh tính toán đủ mạnh để có thể xử lý dữ liệu cho một quá trình
bắn tên lửa lên mặt trăng. Và cho đến ngày nay, sức mạnh tính toán, phần mềm, khả năng
lưu trữ và băng thông, tất cả đều là mặt hàng có thể trao đổi. Mặc dù vậy vẫn có một điều
khá đáng quý trong lĩnh vực máy tính.
20 trang |
Chia sẻ: lylyngoc | Lượt xem: 1434 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Truy cập cơ sở dữ liệu qua C# ADO.NET, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Truy cập cơ sở dữ liệu qua
C# ADO.NET
Trong bài viết này chúng tôi sẽ giới thiệu cho các bạn cách truy cập cơ sở dữ liệu qua C#
ADO.NET.
Cơ sở dữ liệu và ngôn ngữ hướng đối tượng
Trước khi các máy tính mini và các PC xuất hiện, thế giới CNTT đơn giản hơn rất nhiều.
Thời gian đó người ta cho rằng chỉ có các tổ chức rất lớn mới cần đến công nghệ máy
tính. Tuy nhiên một vài năm đây, tất cả chúng ta đều có thể sở hữu những chiếc điện
thoại di động với sức mạnh tính toán đủ mạnh để có thể xử lý dữ liệu cho một quá trình
bắn tên lửa lên mặt trăng. Và cho đến ngày nay, sức mạnh tính toán, phần mềm, khả năng
lưu trữ và băng thông, tất cả đều là mặt hàng có thể trao đổi. Mặc dù vậy vẫn có một điều
khá đáng quý trong lĩnh vực máy tính. Vấn đề ở đây là, sự thiếu hụt một nền tảng phổ
dụng cũng là một cách để thúc đẩy sự phát minh và sáng tạo trong lĩnh vực rộng hơn.
Dưới dạng các chuẩn phần mềm, chúng ta có một danh sách những lựa chọn ấn tượng,
hãy xem sự da dạng của mã nguồn mở và các nền tảng hết sức phổ biến như Linux và
iPhone. Nếu chỉ có một hệ điều hành và một ngôn ngữ lập trình chính thì cũng sẽ có ít sự
cạnh tranh – điều đó cũng thường đi đôi với việc có ít sự lựa chọn.
Đối với thế giới các cơ sở dữ liệu quan hệ cũng có một loạt các sản phẩm cạnh tranh. Sự
truy cập bằng chương trình vào các sản phẩm cơ sở dữ liệu này cũng hiện diện nhiều sự
lựa chọn —Java Persistence API (JPA)/Hibernate, C++, C#, Java,… Trong bài viết này,
chúng tôi sẽ khảo sát công nghệ C# và ADO.NET trong một trường hợp đặc biệt, mục
đích nhằm là để xem các công nghệ này có thể cung cấp những gì cho các nhà lập trình.
Tuy nhiên nếu bạn chưa có nhiều kiến thức về cơ sở dữ liệu, cũng không nên quá lo lắng
vì chúng tôi sẽ giới thiệu từ những vấn đề cơ bản nhất.
Lưu ý: Mã nguồn cho bài viết này hoàn toàn có thể download tại đây với tư cách một giải
pháp C# cho Microsoft Visual C# 2008 Express Edition. Nếu bạn muốn tự chạy mã
nguồn này, chỉ cần giải nén các file vào một thư mục, chẳng hạn như C:\dbcode. Sau đó
mở file giải pháp mang tên DBConsoleApplication.sln trong Microsoft Visual C# 2008
Express Edition. Thao tác này sẽ tự động xây dựng một mã nguồn và tạo các thực thi cần
thiết.
Sau đây chúng ta sẽ can thiệp và triển khai một sản phẩm cơ sở dữ liệu.
Cài đặt SQL Server
Việc cài đặt và chạy chương trình có thể mất khá nhiều thời gian, do vậy mà chúng tôi
không muốn tốn nhiều thời gian của bạn vào công việc này. Với mục đích tập trung vào
việc sử dụng một sản phẩm chuyên nghiệp, chính vì vậy bài viết này chúng tôi đã chọn sử
dụng SQL Server 2005 Express Edition. Bạn có thể sử dụng phiên bản 2008 nếu thích –
các ví dụ trong bài viết này sẽ làm việc trên cả nền tảng 2008.
Chúng ta hãy bắt đầu bằng cách download và cài đặt ba hạng mục dưới đây từ website
của Microsoft:
Microsoft SQL Server 2005 Express Edition
Khi cài đặt SQL Server 2005 Express Edition, hãy sử dụng các thiết lập mặc định; các
thiết lập này sẽ tự động taọ một instance cho database engine.
Microsoft SQL Server Management Studio Express
Đối với SQL Server Management Studio Express, không yêu cầu cấu hình đặc biệt nào –
chỉ cần bạn chấp nhận các cấu hình mặc định. Khi sản phẩm được cài đặt, nó sẽ tự động
phát hiện instance đã được tạo bởi SQL Server 2005 Express Edition.
Microsoft Visual C# 2008 Express Edition
Các ví dụ code sẽ được xây dựng và được test bằng Visual C# 2008 Express Edition.
Tất cả các công đoạn trên thoạt nghe có vẻ phức tạp, tuy nhiên thực tế lại không phải như
vậy. Chúng ta hãy cài đặt các công cụ mới trên và chạy chúng.
Khởi chạy SQL Server Management Studio Express
Sản phẩm SQL Server Management Studio Express cho phép bạn quản lý các instance
của SQL Server. Nghĩa là bạn có thể tương tác với cơ sở dữ liệu được cấu hình trên SQL
Server instance đã cho. Hãy chạy SQL Server Management Studio Express từ menu
Start của Windows. Biểu tượng chương trình thực cho SQL Server Management Studio
Express được cài đặt như một mục menu con trong nhóm các chương trình của Microsoft
SQL Server 2005: Start > All Programs > Microsoft SQL Server 2005.
Khi khởi chạy ứng dụng SQL Server Management Studio Express, một kết nối sẽ được
tạo tự động cho instance của SQL Server đã cài đặt, xem thể hiện trong hình 1. Tên máy
chủ trong hình 1 lấy từ tên của máy host (trong trường hợp này, LAPTOP1) và instance
của SQL Server (SQLEXPRESS trong ví dụ này).
Hình 1: Kết nối đến một instance của SQL Server
Khi kết thúc, kích nút Connect trong hộp thoại. Sau một phút, màn hình SQL Server
Management Studio Express chính sẽ xuất hiện (xem trong hình 2).
Hình 2: Kết nối thành công đến SQL Server instance
Vậy ứng dụng SQL Server Management Studio Express chính xác là gì? Trong hình 2,
hãy để ý mục Object Explorer được hiển thị ở phía trên trong phần panel bên trái –
chương trình này giống như kiểu ứng dụng thám hiểm (explorer) để cho phép bạn quan
sát các instance của database engine. Cũng như trong Windows, bạn có thể xem một số
lượng đáng kể các thông tin có liên quan đến tất cả các instance của cơ sở dữ liệu ở đây.
Sau đây chúng ta hãy tìm hiểu một chút về cửa sổ Object Explorer.
Trong phần panel bên trái, kích vào dấu cộng phía bên trái của biểu tượng thư mục
Databases. Hành động hãy sẽ hiển thị tất cả các cơ sở dữ liệu được host bằng instance
của SQL Server đã cho (xem trong hình 3).
Hình 3: Cơ sở dữ liệu cư trú trên SQLEXPRESS.
Thứ đầu tiên cần lưu ý về các cơ sở dữ liệu trong hình 3 là tất cả chúng đều liên quan đến
SQLEXPRESS; hay nói cách khác, không có cơ sở dữ liệu ứng dụng. Chúng ta hãy cứu
chữa tình huống này bằng cách cài đặt một cơ sở dữ liệu mới.
Microsoft có cung cấp nhiều cơ sở dữ liệu mẫu cho việc sử dụng các sản phẩm SQL
Server. Một trong số đó mà chúng tôi sử dụng cho ví dụ này có tên pubs. Bạn có thể
download cơ sở dữ liệu pubs tại đây và cài đặt nó để sử dụng cho các trải nghiệm của
riêng mình, hay có thể sử dụng cơ sở dữ liệu của riêng bạn.
Khi chạy file cài đặt sẽ triển khai cơ sở dữ liệu pubs, tuy nhiên bạn phải đính kèm nó
trong SQL Server Management Studio Express. Bước này nghe có vẻ khó khăn, tuy
nhiên việc đính kèm này thực sự rất dễ dàng. Bạn chỉ cần kích nút File và duyệt đến file
instpubs.sql (xem trong hình 4). File của chúng tôi được định vị theo đường dẫn dưới
đây:
C:\SQL Server 2000 Sample Databases\instpubs.sql
Chọn file và kích Open. Khi file kịch bản được mở, kích nút Execute trong toolbar (xem
trong hình 5).
Hình 4: Chạy kịch bản cơ sở dữ liệu pubs
Hình 5: Trước khi file instpubs.sql được thực thi
Nếu tất cả đều diễn ra tốt đẹp với cài đặt của bạn, một cơ sở dữ liệu mới có tên gọi pubs
sẽ xuất hiện trong danh sách bên trái panel, xem thể hiện trong hình 6.
Lưu ý: Để xem đầu ra trong hình 6, bạn có thể kích vào database instance
(LAPTOP1\SQLEXPRESS) trong phần panel bên trái của cửa sổ Object Explorer, sau
đó kích nút Refresh.
Hình 6: Sau khi đính kèm vào cơ sở dữ liệu pubs
Nếu mở rộng cơ sở dữ liệu pubs bằng cách kích vào dấu cộng, bạn sẽ thấy các bảng thành
phần, xem thể hiện trong hình 7.
Hình 7: Sau khi cài đặt thành công cơ sở dữ liệu pubs
Cơ sở dữ liệu trong ví dụ này đã hoàn toàn sẵn sàng cho việc truy cập thông qua C#. Đó
là tất cả những gì chúng tôi sẽ thực hiện với SQL Server Management Studio Express
trong bài viết này. Như những hình thể hiện, sản phẩm này cung cấp một môi trường khá
đẹp để bạn có thể quản trị các cơ sở dữ liệu SQL Server của mình. Giờ đây chúng ta sẽ đi
xem cách truy cập vào các cơ sở dữ liệu đó bằng Visual C# 2008 Express Edition như thế
nào.
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:
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["SqlConnStringPubs"].
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
<add name ="SqlConnStringPubs"
connectionString ="Server=.\SQLExpress;
AttachDbFilename=C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\pubs.mdf;Database=dname;
Trusted_Connection=Yes;"/>
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.