Tải bản đầy đủ (.pdf) (14 trang)

Truy cập cơ sở dữ liệu qua C# ADO.NET potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (591.17 KB, 14 trang )

Truy cập cơ sở dữ liệu qua C# ADO.NET
Quản trị mạng – 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 Expres
s 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
<?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.


Văn Linh (Theo Informit)

×