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

Tài liệu Testing for No Records docx

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 (12.48 KB, 2 trang )

[ Team LiB ]

Recipe 2.11 Testing for No Records
Problem
You need to determine whether any records were returned from a query that you just
executed.
Solution
Use the DataRowCollection.Count property, the DataReader.HasRows property, or the
DataReader.Read( ) method.
The sample code creates and fills a DataTable and uses the Count property of the
DataRowCollection to determine if the query used to create the table returned any rows.
N
ext, a DataReader is created and both the HasRows property and the Read( ) method are
used to determine whether the query used to create the DataReader returned any rows.
The C# code is shown in Example 2-13
.
Example 2-13. File: NoRecordTestForm.cs
// Namespaces, variables, and constants
using System;
using System.Configuration;
using System.Text;
using System.Data;
using System.Data.SqlClient;

// Table name constants
private const String ORDERS_TABLE = "Orders";

// . . .

StringBuilder result = new StringBuilder( );


// Fill the Orders DataTable.
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Orders",
ConfigurationSettings.AppSettings["Sql_ConnectString"]);
DataTable orderTable = new DataTable(ORDERS_TABLE);
da.Fill(orderTable);

// Test Orders DataTable for records.
bool tableHasRecords = orderTable.Rows.Count > 0;
result.Append("DataTable " + ORDERS_TABLE + ": Has records = " +
tableHasRecords + Environment.NewLine);

// Create the Orders DataReader.
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["Sql_ConnectString"]);
SqlCommand cmd = new SqlCommand("SELECT * FROM ORDERS", conn);
conn.Open( );
SqlDataReader orderReader = cmd.ExecuteReader( );

// Test Orders DataReader for records.
result.Append("DataReader " + ORDERS_TABLE + ": Has records = " +
orderReader.HasRows + Environment.NewLine);

// Test Orders DataReader for records.
bool readerHasRecords = orderReader.Read( );
result.Append("DataReader " + ORDERS_TABLE + ": Has records = " +
readerHasRecords + Environment.NewLine);

orderReader.Close( );
conn.Close( );


resultTextBox.Text = result.ToString( );
Discussion
The DataTable contains a DataRowCollection object that contains all DataRow objects in
the table. The DataRowCollection has a Count property that returns the number of rows
in the table. The Count property for an empty table has a value of 0.
The HasRows property of the DataReader returns a Boolean value indicating whether the
DataReader has any records.
Another way is to use the Read( ) method to advance the DataReader to the next record.
This returns a value of true if a record is available and false otherwise. The first call to
the Read( ) method will indicate whether any records were returned by the DataReader.
This was the only way to determine whether the DataReader contained any records prior
to the introduction of the HasRows property in .NET Framework 1.1.
[ Team LiB ]


×