QueryResult 类
表示从数据库查询返回的查询结果。
继承等级结构
System.Object
Microsoft.Web.Management.DatabaseManager.QueryResult
Namespace: Microsoft.Web.Management.DatabaseManager
程序集: Microsoft.Web.Management.DatabaseManager (Microsoft.Web.Management.DatabaseManager.dll)
语法
'Declaration
Public Class QueryResult
'Usage
Dim instance As QueryResult
public class QueryResult
public ref class QueryResult
public class QueryResult
QueryResult 类型公开以下成员。
构造函数
方法类型 | 名称 | 描述 |
---|---|---|
QueryResult | 创建 QueryResult 类的新实例。 |
属性
属性类型 | 名称 | 描述 |
---|---|---|
ColumnMetadata | 返回查询结果的列元数据列表。 | |
QueryResults | 检索查询结果数组。 |
方法
方法类型 | 名称 | 描述 |
---|---|---|
等于 | (从 Object 继承。) | |
完成 | (从 Object 继承。) | |
GetHashCode | (从 Object 继承。) | |
GetType | (从 Object 继承。) | |
MemberwiseClone | (从 Object 继承。) | |
ToString | (从 Object 继承。) |
示例
下面的代码示例演示了一个从数据库查询返回查询结果数组的示例 ExecuteQuery 方法。
Public Overrides Function ExecuteQuery( _
ByVal connectionString As String, _
ByVal query As Microsoft.Web.Management.DatabaseManager.Query) _
As Microsoft.Web.Management.DatabaseManager.QueryResult()
Dim results As List(Of QueryResult) = New List(Of QueryResult)
Dim result As QueryResult = New QueryResult
Try
' Create a new OLEDB connection using the connection string.
Dim connection As OleDbConnection = New OleDbConnection(connectionString)
Dim command As OleDbCommand = New OleDbCommand(query.Statement, connection)
' Open the database connection.
connection.Open()
' Execute the query and access the data.
Dim reader As OleDbDataReader = command.ExecuteReader
' Add the results to the query list.
results.Add(GetQueryResult(reader))
' Close the database connection.
reader.Close()
' Return the query results.
Return results.ToArray
Catch ex As Exception
Throw New ProviderException(ex.Message)
End Try
End Function
...
Private Function GetQueryResult(ByVal reader As OleDbDataReader) As QueryResult
Dim result As QueryResult = New QueryResult
Dim fieldCount As Integer = reader.FieldCount
Dim i As Integer = 0
Do While (i < fieldCount)
Dim metadata As QueryColumnMetadata = New QueryColumnMetadata
metadata.Name = reader.GetName(i)
result.ColumnMetadata.Add(metadata)
i = (i + 1)
Loop
While reader.Read
Dim itemData() As Object = New Object((fieldCount) - 1) {}
i = 0
Do While (i < fieldCount)
itemData(i) = ConvertToSerializable(reader(i))
i = (i + 1)
Loop
result.QueryResults.Add(itemData)
End While
Return result
End Function
public override QueryResult[] ExecuteQuery(
string connectionString,
Query query )
{
List<QueryResult> results = new List<QueryResult>();
QueryResult result = new QueryResult();
try
{
// Create a new OLEDB connection using the connection string.
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand command = new OleDbCommand(query.Statement, connection);
// Open the database connection.
connection.Open();
// Execute the query and access the data.
OleDbDataReader reader = command.ExecuteReader();
// Add the results to the query list.
results.Add(GetQueryResult(reader));
// Close the database connection.
reader.Close();
}
// Return the query results.
return results.ToArray();
}
catch(Exception ex)
{
throw new ProviderException(ex.Message);
}
}
...
private QueryResult GetQueryResult(OleDbDataReader reader)
{
QueryResult result = new QueryResult();
int fieldCount = reader.FieldCount;
for (int i = 0; i < fieldCount; i++)
{
QueryColumnMetadata metadata = new QueryColumnMetadata();
metadata.Name = reader.GetName(i);
result.ColumnMetadata.Add(metadata);
}
while (reader.Read())
{
object[] itemData = new object[fieldCount];
for (int i = 0; i < fieldCount; i++)
{
itemData[i] = ConvertToSerializable(reader[i]);
}
result.QueryResults.Add(itemData);
}
return result;
}
线程安全
此类型的所有公共静态(在 Visual Basic 中为Shared)成员都是线程安全的。 但不保证所有实例成员都是线程安全的。