Jerry

New Member

Download miễn phí Truy cập cơ sở dữ liệu với .NET





Lớp DataSet được thiết kếnhưlà một thùng chứa các dữliệu không kết nối. Nó không có
khái niệm vềcác kết nối dữliệu. Thật vậy, dữliệu được giữtrong một DataSet không
quan tâm đến nguồn cơsởdữliệu – nó có thểchỉlà những mẫu tin chứa trong một file
CSV, hay là những đầu đọc từmột thiết bị đo lường.
Một DataSetbao gồm một tập các bảng dữliệu, mỗi bảng là một tập các cột dữliệu và
dòng dữliệu. Thêm vào đó là các định nghĩa dữliệu, bạn có thể định nghĩa các link giữa
các DataSet. Mối quan hệphổbiến giữa các DataSet là parent-child relationship.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

của chương
này.
Một command được tạo ra, có thể được thực thi bởi việc phát ra các lệnh sau:
aCommand.Parameters[0].Value = 999;
Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH]
Nguyễn Minh Hiệp  Page 82 
aCommand.Parameters[1].Value = "South Western England";
aCommand.ExecuteNonQuery();
Ở đây chúng ta đang cài đặt giá trị cho các tham số, sau đó thực thi stored procedure.
Các Command parameters có thể được cài đặt bằng chỉ số như đã trình bày ở trên, hay
dùng tên.
Record Deletion
Stored procedure tiếp theo dùng để xóa một mẫu tin trong bảng Region:
CREATE PROCEDURE RegionDelete (@RegionID INTEGER) AS
SET NOCOUNT OFF
DELETE FROM Region
WHERE RegionID = @RegionID
GO
Procedure này chỉ yêu cầu khóa chính của mẫu tin. Mã sử dụng một đối tượng
SqlCommand để gọi stored procedure này như sau:
SqlCommand aCommand = new SqlCommand("RegionDelete" , conn);
aCommand.CommandType = CommandType.StoredProcedure;
aCommand.Parameters.Add(new SqlParameter("@RegionID" , SqlDbType.Int , 0 ,
"RegionID"));
aCommand.UpdatedRowSource = UpdateRowSource.None;
Lệnh này chỉ chấp nhận một tham số đơn để thực thi RegionDelete stored procedure; đây
là ví dụ cho việc cài đặt tham số theo tên:
aCommand.Parameters["@RegionID"].Value= 999;
aCommand.ExecuteNonQuery();
3.3.3 Gọi Stored Procedure có các tham số trả về
Cả hai ví dụ về stored procedures ở trên đều không có giá trị trả về. Nếu một stored
procedure bao gồm các tham số trả về, sau đó những cách này cần được định
nghĩa trong .NET client rằng chúng có thể lấy giá trị trả về từ procedure.
Ví dụ sau chỉ ra cách chền một mẫu tin vào cơ sở dữ liệu, và trả về khoá chính của mẫu
tin đó.
Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH]
Nguyễn Minh Hiệp  Page 83 
Record Insertion
Bảng Region chỉ chứa khóa chính (RegionID) và một trường diễn giải
(RegionDescription). Để chèn một mẫu tin, cần cung cấp khóa chính, và sau đó một
mẫu tinh mới sẽ được chèn vào cơ sở dữ liệu. tui đã chọn cách tạo khóa chính đơn giản
nhất trong ví dụ này bằng cách tạo ra một số mới trong stored procedure. cách
được dùng hết sức thô sơ, tui sẽ bàn kĩ về cách tạo khóa chính ở phần sau của chương. Và
đây là ví dụ thô sơ của chúng ta:
CREATE PROCEDURE RegionInsert(@RegionDescription NCHAR(50),
@RegionID INTEGER OUTPUT)AS
SET NOCOUNT OFF
SELECT @RegionID = MAX(RegionID)+ 1
FROM Region
INSERT INTO Region(RegionID, RegionDescription)
VALUES(@RegionID, @RegionDescription)
GO
Insert procedure này tạo ra một mẫu tin Region mới. Khóa chính được phát ra bởi chính
cơ sở dữ liệu, giá trị này được tra về như một tham số của procedure (@RegionID). Đây
là một ví dụ đơn giản, nhưng đối với các bảng phức tạp hơn, nó thường không sử dụng
các tham số trả về mà thay vào đó nó chọn các dòng được cập nhật và trả nó về cho trình
gọi.
SqlCommand aCommand = new SqlCommand("RegionInsert" , conn);
aCommand.CommandType = CommandType.StoredProcedure;
aCommand.Parameters.Add(new SqlParameter("@RegionDescription" ,
SqlDbType.NChar ,
50 ,
"RegionDescription"));
aCommand.Parameters.Add(new SqlParameter("@RegionID" ,
SqlDbType.Int,
0 ,
ParameterDirection.Output ,
false ,
0 ,
0 ,
"RegionID" ,
DataRowVersion.Default ,
null));
aCommand.UpdatedRowSource = UpdateRowSource.OutputParameters;
Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH]
Nguyễn Minh Hiệp  Page 84 
Đây là phần định nghĩa phức tạp hơn cho các tham số. Tham số thứ hai, @RegionID,
được định nghĩa để bao gồm các tham số trực tiếp của nó, trong ví dụ này nó là Output.
Chúng ta sử dụng tập hợp UpdateRowSource để thêm cờ OutputParameters trên dòng
cuối của mã, cờ này cho phép chúng ta trả dữ liệu từ stored procedure này vào các tham
số. Cờ này được dùng chủ yếu cho việc gọi các stored procedure từ một DataTable (được
giải thích trong chương sau).
Việc gọi stored procedure này giống như các ví dụ trước, ngoại trừ ở đây chúng ta cần
đọc tham số xuất sau khi thực thi procedure:
aCommand.Parameters["@RegionDescription"].Value = "South West";
aCommand.ExecuteNonQuery();
int newRegionID = (int) aCommand.Parameters["@RegionID"].Value;
Sau khi thực thi lệnh, chúng ta đọc giá trị tham số @RegionID và ép nó vào một integer.
Có thể bạn sẽ hỏi phải làm gì nếu stored procedure mà bạn gọi trả về các tham số xuất và
một tập các dòng. Trong trường hợp này, định nghĩa các tham số tương ứng, sau đó gọi
cách ExecuteNonQuery(), cũng có thể gọi một trong những cách khác
(chẳng hạn như ExecuteReader()) nó cho phép bạn lấy các mẫu tin trả về.
3.4 Truy cập nhanh cơ sở dữ liệu với Data Reader
Một data reader là cách đơn giản nhất và nhanh nhất để chọn một vài dữ liệu từ một
nguồn cơ sơ dữ liệu, nhưng cũng ít chức năng nhất. Bạn có thể truy xuất trực tiếp một đối
tượng data reader – Một minh dụ được trả về từ một đối tượng SqlCommand hay
OleDbCommand từ việc gọi một cách ExecuteReader() – có thể là một đối tượng
SqlCommand, một đối tượng SqlDataReader, từ một đối tượng OleDbCommand là một
OleDbDataReader.
Mã lệnh sau đây sẽ chứng minh cách chọn dữ liệu từ bản Customers của cơ sở dữ liệu
Northwind. Ví dụ kết nối với cơ sở dữ liệu chọn một số các mẫu tin, duyệt qua các mẫu
tin được chọn và xuất chúng ra màn hình console.
Ví dụ này có thể dùng cho OLE DB provider. Trong hầu hết các trường hợp các phương
thức của SqlClient đều được ánh xạ một một vào các cách của đối OleDBClient.
Để thực thi lại các lệnh đối với một OLE DB data source, lớp OleDbCommand được sử
dụng. Mã lệnh dưới đây là một ví dụ một câu lệnh SQL đơn giảnvà đọc các mẫu tin được
trả về bởi đối tượng OleDbDataReader.
Chú ý hai câu lệnh using dưới đây được dùng trong lớp OleDb:
Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH]
Nguyễn Minh Hiệp  Page 85 
using System;
using System.Data.OleDb;
Tất cả các trình cung cấp dữ liệu đều sẵn chứa bên trong các data DLL, vì vậy chỉ cần
tham chiếu đến System.Data.dll assembly để dùng cho các lớp trong phần này:
public class DataReaderExample
{
public static void Main(string[] args)
{
string source = "Provider=SQLOLEDB;" +
"server=(local)\\NetSDK;" +
"uid=QSUser;pwd=QSPassword;" +
"database=northwind";
string select = "SELECT ContactName,CompanyName FROM Customers";
OleDbConnection conn = new OleDbConnection(source);
conn.Open();
OleDbCommand cmd = new OleDbCommand(select , conn);
OleDbDataReader aReader = cmd.ExecuteReader();
while(aReader.Read())
Console.WriteLine("'{0}' from {1}" ,
aReader.GetString(0) , aReader.GetString(1));
aReader.Close();
conn.Close();
}
}
Mã nguôn trên đây bao gồm các đoạn lệnh quen thuộc đã được trình bày trong các
chương trước. Để biên dịch ví dụ này, ta dùng các dòng lệnh sau:
csc /t:exe /debug+ DataReaderExample.cs /r:System.Data.dll
Mã sau đây từ ví dụ trên cho phép tạo một kết nối OLE DB .NET, dựa trên chuỗi kết nối:
OleDbConnection conn = new OleDbConnection(source);
conn.Open();
OleDbCommand cmd = new OleDbCommand(select, conn);
Dòng thứ ba tạo một đối tượng OleDbCommand mới, dựa vào câu lệnh SELECT, kết nối
sẽ thực thi câu lệnh lệnh này. Nếu bạn tạo một command hợp lệ, bạn có thể thực thi
chúng để trả về một minh dụ OleDbDataReader:
OleDbDataReader aReader = cmd.ExecuteReader();
Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH]
Nguyễn Minh Hiệp  Page 86 
Mội OleDbDataReader ch
 

Các chủ đề có liên quan khác

Top