1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu The DataSet Class phần 3 doc

9 247 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Using multiple DataAdapter objects to populate the same DataSet object
Thể loại Tutorial
Định dạng
Số trang 9
Dung lượng 35,47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The output from this program is as follows: numberOfRows = 3 Reading from the Products DataTable ProductID = 1 ProductName = Chai UnitPrice = 18 ProductID = 2 ProductName = Chang UnitPri

Trang 1

The output from this program is as follows:

numberOfRows = 3

Reading from the Products DataTable

ProductID = 1

ProductName = Chai

UnitPrice = 18

ProductID = 2

ProductName = Chang

UnitPrice = 19

Reading from the Customers DataTable

CustomerID = ALFKI

CompanyName = Alfreds Futterkiste

Changing the CommandText Property of the SelectCommand

You can also populate a DataSet with multiple DataTable objects by changing the

CommandText property of the SelectCommand for your DataAdapter object before each call to the Fill() method First, the following code populates a DataSet with a DataTable containing two rows from the Products table:

SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

mySqlCommand.CommandText =

"SELECT TOP 2 ProductID, ProductName, UnitPrice " +

"FROM Products " +

"ORDER BY ProductID";

SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();

mySqlDataAdapter.SelectCommand = mySqlCommand;

DataSet myDataSet = new DataSet();

mySqlConnection.Open();

int numberOfRows = mySqlDataAdapter.Fill(myDataSet, "Products");

The myDataSet object now contains a DataTable named Products

Next, the CommandText property for the SelectCommand of mySqlDataAdapter is changed to a SELECT statement that retrieves rows from the Customers table, and the Fill() method is called again:

mySqlDataAdapter.SelectCommand.CommandText =

"SELECT CustomerID, CompanyName " +

"FROM Customers " +

Trang 2

"WHERE CustomerID = 'ALFKI'";

numberOfRows = mySqlDataAdapter.Fill(myDataSet, "Customers");

mySqlConnection.Close();

The myDataSet object now contains an additional DataTable named Customers

Listing 10.6: MULTIPLEDATATABLES2.CS

/*

MutlipleDataTables2.cs illustrates how to populate a DataSet

object with multiple DataTable objects by changing the

CommandText property of a DataAdapter object's SelectCommand

*/

using System;

using System.Data;

using System.Data.SqlClient;

class MultipleDataTables2

{

public static void Main()

{

SqlConnection mySqlConnection =

new SqlConnection(

"server=localhost;database=Northwind;uid=sa;pwd=sa"

);

SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText =

"SELECT TOP 2 ProductID, ProductName, UnitPrice " +

"FROM Products " +

"ORDER BY ProductID";

SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();

mySqlDataAdapter.SelectCommand = mySqlCommand;

DataSet myDataSet = new DataSet();

mySqlConnection.Open();

int numberOfRows = mySqlDataAdapter.Fill(myDataSet, "Products");

Console.WriteLine("numberOfRows = " + numberOfRows);

// change the CommandText property of the SelectCommand

mySqlDataAdapter.SelectCommand.CommandText =

"SELECT CustomerID, CompanyName " +

Trang 3

"FROM Customers " +

"WHERE CustomerID = 'ALFKI'";

numberOfRows = mySqlDataAdapter.Fill(myDataSet, "Customers"); Console.WriteLine("numberOfRows = " + numberOfRows);

mySqlConnection.Close();

foreach (DataTable myDataTable in myDataSet.Tables) {

Console.WriteLine("\nReading from the " +

myDataTable.TableName + "DataTable");

foreach (DataRow myDataRow in myDataTable.Rows)

{

foreach (DataColumn myDataColumn in myDataTable.Columns)

{

Console.WriteLine(myDataColumn + "= " +

myDataRow[myDataColumn]);

}

}

}

}

}

The output from this program is as follows:

numberOfRows = 2

numberOfRows = 1

Reading from the Products DataTable

ProductID = 1

ProductName = Chai

UnitPrice = 18

ProductID = 2

ProductName = Chang

UnitPrice = 19

Reading from the Customers DataTable

CustomerID = ALFKI

CompanyName = Alfreds Futterkiste

Using Multiple DataAdapter Objects to Populate the Same DataSet Object

Trang 4

You can also populate the same DataSet with multiple DataTable objects using different DataAdapter objects For example, assume you already have a DataSet named myDataSet that was populated using a SqlDataAdapter named mySqlDataAdapter, and that

myDataSet currently contains a DataTable named Products The following example creates another SqlDataAdapter and uses it to populate myDataSet with another

DataTable named Customers:

SqlDataAdapter mySqlDataAdapter2 = new SqlDataAdapter();

mySqlDataAdapter2.SelectCommand = mySqlCommand;

mySqlDataAdapter2.SelectCommand.CommandText =

"SELECT CustomerID, CompanyName " +

"FROM Customers " +

"WHERE CustomerID = 'ALFKI'";

numberOfRows = mySqlDataAdapter2.Fill(myDataSet, "Customers");

Listing 10.7: MULTIPLEDATATABLES3.CS

/*

MutlipleDataTables3.cs illustrates how to populate a DataSet

object with multiple DataTable objects using multiple

DataAdapter objects to populate the same DataSet object

*/

using System;

using System.Data;

using System.Data.SqlClient;

class MultipleDataTables3

{

public static void Main()

{

SqlConnection mySqlConnection =

new SqlConnection(

"server=localhost;database=Northwind;uid=sa;pwd=sa"

);

SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

mySqlCommand.CommandText =

"SELECT TOP 2 ProductID, ProductName, UnitPrice " +

"FROM Products " +

"ORDER BY ProductID";

SqlDataAdapter mySqlDataAdapter1 = new SqlDataAdapter();

mySqlDataAdapter1.SelectCommand = mySqlCommand;

Trang 5

DataSet myDataSet = new DataSet();

mySqlConnection.Open();

int numberOfRows = mySqlDataAdapter1.Fill(myDataSet, "Products"); Console.WriteLine("numberOfRows = " + numberOfRows);

// create another DataAdapter object

SqlDataAdapter mySqlDataAdapter2 = new SqlDataAdapter();

mySqlDataAdapter2.SelectCommand = mySqlCommand;

mySqlDataAdapter2.SelectCommand.CommandText =

"SELECT CustomerID, CompanyName " +

"FROM Customers " +

"WHERE CustomerID = 'ALFKI'";

numberOfRows = mySqlDataAdapter2.Fill(myDataSet, "Customers"); Console.WriteLine("numberOfRows = " + numberOfRows);

mySqlConnection.Close();

foreach (DataTable myDataTable in myDataSet.Tables) {

Console.WriteLine("\nReading from the " +

myDataTable.TableName + "DataTable");

foreach (DataRow myDataRow in myDataTable.Rows)

{

foreach (DataColumn myDataColumn in myDataTable.Columns) {

Console.WriteLine(myDataColumn + "= " +

myDataRow[myDataColumn]);

}

}

}

}

}

The output from this program is as follows:

numberOfRows = 2

numberOfRows = 1

Reading from the Products DataTable

ProductID = 1

ProductName = Chai

UnitPrice = 18

ProductID = 2

Trang 6

ProductName = Chang

UnitPrice = 19

Reading from the Customers DataTable

CustomerID = ALFKI

CompanyName = Alfreds Futterkiste

Merging DataRow, DataSet, and DataTable Objects into Another DataSet

In this section, you'll learn how to use the Merge() method to merge DataRow, DataSet, and DataTable objects into another DataSet You might want to do this when you have multiple sources of data; for example, you might get data from many regional offices that

is sent to headquarters, and you need to merge all that data into one DataSet

The Merge() method is overloaded as follows:

void Merge(DataRow[] myDataRows)

void Merge(DataSet myDataSet)

void Merge(DataTable myDataTable)

void Merge(DataSet myDataSet, bool preserveChanges)

void Merge(DataRow[] myDataRows, bool preserveChanges,

MissingSchemaAction myMissingSchemaAction)

void Merge(DataSet myDataSet, bool preserveChanges,

MissingSchemaAction myMissingSchemaAction)

void Merge(DataTable myDataTable, bool preserveChanges,

MissingSchemaAction myMissingSchemaAction)

where

PreserveChanges specifies whether changes in the current DataSet (the DataSet

with the Merge() method that is called) are to be kept

MyMissingSchemaAction specifies the action to take when the current DataSet

doesn't have the same tables or columns as the DataRow, DataSet, or DataTable being merged into that DataSet

You set myMissingSchemaAction to one of the constants defined in the

System.Data.MissingSchemaAction enumeration Table 10.7 shows the constants defined

in the MissingSchemaAction enumeration

Table 10.7: MissingSchemaAction ENUMERATION MEMBERS

CONSTANT DESCRIPTION

Add The column or table is added to the current DataSet Add is the default

Trang 7

Table 10.7: MissingSchemaAction ENUMERATION MEMBERS

CONSTANT DESCRIPTION

AddWithKey The column and primary key information is added to the current DataSet Error A SystemException is thrown

Ignore The column or table is ignored and not read

Listing 10.8: MERGE.CS

/*

Merge.cs illustrates how to use the Merge() method

*/

using System;

using System.Data;

using System.Data.SqlClient;

class Merge

{

public static void Main()

{

SqlConnection mySqlConnection =

new SqlConnection(

"server=localhost;database=Northwind;uid=sa;pwd=sa"

);

SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

// populate myDataSet with three rows from the Customers table

mySqlCommand.CommandText =

"SELECT CustomerID, CompanyName, ContactName, Address " +

"FROM Customers " +

"WHERE CustomerID IN ('ALFKI', 'ANATR', 'ANTON')";

SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();

mySqlDataAdapter.SelectCommand = mySqlCommand;

DataSet myDataSet = new DataSet();

mySqlConnection.Open();

mySqlDataAdapter.Fill(myDataSet, "Customers");

// populate myDataSet2 with two rows from the Customers table

mySqlCommand.CommandText =

Trang 8

"SELECT CustomerID, CompanyName, ContactName, Address " +

"FROM Customers " +

"WHERE CustomerID IN ('AROUT', 'BERGS')";

DataSet myDataSet2 = new DataSet();

mySqlDataAdapter.Fill(myDataSet2, "Customers2");

// populate myDataSet3 with five rows from the Products table

mySqlCommand.CommandText =

"SELECT TOP 5 ProductID, ProductName, UnitPrice " +

"FROM Products " +

"ORDER BY ProductID";

DataSet myDataSet3 = new DataSet();

mySqlDataAdapter.Fill(myDataSet3, "Products");

mySqlConnection.Close();

// merge myDataSet2 into myDataSet

myDataSet.Merge(myDataSet2);

// merge myDataSet3 into myDataSet

myDataSet.Merge(myDataSet3, true, MissingSchemaAction.Add);

// display the rows in myDataSet

foreach (DataTable myDataTable in myDataSet.Tables)

{

Console.WriteLine("\nReading from the " + myDataTable + "DataTable"); foreach (DataRow myDataRow in myDataTable.Rows)

{

foreach (DataColumn myDataColumn in myDataTable.Columns)

{

Console.WriteLine(myDataColumn + "= " +

myDataRow[myDataColumn]);

}

}

}

}

}

The output from this program is as follows:

Reading from the Customers DataTable

Trang 9

CustomerID = ALFKI

CompanyName = Alfreds Futterkiste

ContactName = Maria Anders

Address = Obere Str 57

CustomerID = ANATR

CompanyName = Ana Trujillo3 Emparedados y helados ContactName = Ana Trujillo

Address = Avda de la Constitución 2222

CustomerID = ANTON

CompanyName = Antonio Moreno Taquería

ContactName = Antonio Moreno

Address = Mataderos 2312

Reading from the Customers2 DataTable

CustomerID = AROUT

CompanyName = Around the Horn

ContactName = Thomas Hardy

Address = 120 Hanover Sq

CustomerID = BERGS

CompanyName = Berglunds snabbköp

ContactName = Christina Berglund

Address = Berguvsvägen 8

Reading from the Products DataTable

ProductID = 1

ProductName = Chai

UnitPrice = 18

ProductID = 2

ProductName = Chang

UnitPrice = 19

ProductID = 3

ProductName = Aniseed Syrup

UnitPrice = 10

ProductID = 4

ProductName = Chef Anton's Cajun Seasoning

UnitPrice = 22

ProductID = 5

ProductName = Chef Anton's Gumbo Mix

UnitPrice = 21.35

Ngày đăng: 26/01/2014, 07:20

TỪ KHÓA LIÊN QUAN

w