Thứ ba, ngày 6 tháng 12 năm 2016

ADO.NET – Làm việc với Strongly Typed DataSet

Ngày đăng: 16/3/2012, 14:1:9AM | Lượt xem: 5,900
Hot!

Strongly typed DataSet (hay typed DataSet) là một loại DataSet cho phép bạn truy xuất trực tiếp đến các thành phần bên trong như bảng, cột thông qua tên của chúng với sự hỗ trợ của IntelliSense. Cùng với đó, kiểu dữ liệu của các cột trong bảng cũng được xác định rõ giúp hạn chế các công việc chuyển đổi cũng như ghi nhớ các kiểu, tên của dữ liệu.

Strongly typed DataSet (hay typed DataSet) là một loại DataSet cho phép bạn truy xuất trực tiếp đến các thành phần bên trong như bảng, cột thông qua tên của chúng với sự hỗ trợ của IntelliSense. Cùng với đó, kiểu dữ liệu của các cột trong bảng cũng được xác định rõ giúp hạn chế các công việc chuyển đổi cũng như ghi nhớ các kiểu, tên của dữ liệu.

Strongly typed DataSet là gì?

Một typed DataSet được thừa kế từ lớp DataSet, vì vậy typed DataSet có đầy đủ các method, event, property của một DataSet thông thường (untyped DataSet). Tuy nhiên chúng cũng được thay đổi trở thành các strongly typed method, event, property.

Ví dụ với DataSet thông thường, để lấy ra giá trị Name đầu tiên trong bảng User, ta sẽ viết như sau:

string userName = dataSet.Tables["User"].Rows[0]["Name"].ToString();

Tuy nhiên với typed DataSet, ta chỉ cần viết:

string userName = dataSet.User[0].Name;

Như bạn thấy, các bảng, cột trong DataSet đã chuyển thành các property với tên tương ứng (User, Name).

Tạo typed DataSet

Mỗi typed DataSet được xây dựng dựa trên một XML Schema (hay XSD Schema). Tuy nhiên bạn không cần phải tạo thủ công file schema này, Visual Studio sẽ tự động làm công việc này và cung cấp chức năng tạo typed DataSet trực quan cho bạn.

Ngoài ra, nếu đã có sẵn tập tin xsd, bạn có thể dùng công cụ xsd.exe có sẵn trong .Net Framework để tạo ra typed DataSet. Xem hướng dẫn tại:

http://msdn.microsoft.com/en-us/library/wha85tzb(v=vs.71).aspx

Các bước thực hiện để tạo 1 typed DataSet trong VS:

  1. Nếu muốn tạo typed DataSet từ dữ liệu có sắn, bạn phải tạo kết nối đến dữ liệu đó trong Server Explorer.
  2. Thêm một item DataSet vào project hiện tại, tên mặc định là DataSet1.xsd
  3. Kéo các table cần thiết trong Server Explorer vào trong cửa sổ designer của DataSet. Khi đó, một lớp TableAdapter tương ứng cũng được tạo ra cho DataTable đó. (Bạn cũng thể tạo các DataTable, DataAdapter mới qua menu context trong cửa sổ này).

Mặc định typed DataSet được tạo ra sẽ lấy tất cả dữ liệu trong table cùa database, bạn có thể sửa lại câu query bằng cách nhấn chuột phải vào DataTable và chọn Configure… Sau đó bạn có thể sử dụng chức năng Query Builder trực quan để làm việc.

Notes: Ví dụ này sử dụng Northwind Database, nếu bạn cần, có thể download tại link: http://www.microsoft.com/download/en/details.aspx?id=23654. Tải về và cài đặt bình thường.

Thêm query cho typed DataSet

Khi được tạo ra từ database, typed DataSet có sẵn hai phương thức Fill() và GetData() tương ứng với câu query để lấy dữ liệu cho bảng. Điểm khác biệt hai phương thức này chỉ là tham số và dữ liệu chúng trả về. Bạn có thể xem định nghĩa của hai phương thức này trong tập tin DataSet1.Designer.cs, cả hai đều dùng một DataAdapter bên trong để fill dữ liệu:

// […]

public virtual int Fill(DataSet1.OrdersDataTable dataTable) {
    // […]
    int returnValue = this.Adapter.Fill(dataTable);
    return returnValue;
}
// […]

public virtual DataSet1.OrdersDataTable GetData() {
    // […]
    this.Adapter.Fill(dataTable);
    return dataTable;
}

Để tạo thêm một query mới cho DataTable, bạn nhấn phải chuột vào phần DataTable chọn Add Query. Tiếp đó bạn thực hiện qua các bước wizard sau để tạo ra một query trả về các order có EmployeeID là một tham số truyền vào:

1. Nhấn Next

2. Chọn loại câu SQL query, ở đây ta chọn mặc định là “SELECT which returns rows” và nhấn Next.

3. Trong cửa sổ thiết kế bạn có thể sửa đối trực tiếp câu SQL hoặc nhấn Query Builder… để thao tác và kiểm tra trực quan. Câu query ta cần viết sẽ như sau:

SELECT [Customer ID], [Employee ID], Freight, [Order ID], [Ship Name] FROM Orders WHERE ([Employee ID] = @Employee)

4. Bước này bạn sẽ thiết lập các phương thức để thêm vào TableAdapter, để mặc định là hai phương thức FillBy() và GetDataBy(), nhấn Next.

5. Kiểm tra mọi thứ đã chính xác, nếu không hãy quay lại bước trước đó và sửa lại, nhấn Finish.

Bạn có thể thấy phần TableAdapter xuất hiện thêm hai phương thức mới cùng với tên tham số của chúng.

Kiểm tra bằng đoạn chương trình C# sau để lấy các order có EmployeeID là 4:

using System;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet1 ds = new DataSet1();
            DataSet1TableAdapters.OrdersTableAdapter orderAdapter = new DataSet1TableAdapters.OrdersTableAdapter();

            orderAdapter.FillBy(ds.Orders, 4);
           //  DataSet1.OrdersDataTable table = orderAdapter.GetDataBy(4);

            Console.WriteLine("CusID tEmpID");
            Console.WriteLine("==============");
            foreach (var item in ds.Orders)
            {
                Console.WriteLine(item.Customer_ID + "t" + item.Employee_ID);
            }

            Console.Read();
        }
    }
}

Output:

http://yinyangit.wordpress.com

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.