データベース クエリの実行後にクエリ結果の配列を返します。
名前空間:Microsoft.Web.Management.DatabaseManager
アセンブリ: Microsoft.Web.Management.DatabaseManager (Microsoft.Web.Management.DatabaseManager.dll内)
構文
'Declaration
Public MustOverride Function ExecuteQuery ( _
connectionString As String, _
query As Query _
) As QueryResult()
'Usage
Dim instance As DatabaseProvider
Dim connectionString As String
Dim query As Query
Dim returnValue As QueryResult()
returnValue = instance.ExecuteQuery(connectionString, _
query)
public abstract QueryResult[] ExecuteQuery(
string connectionString,
Query query
)
public:
virtual array<QueryResult^>^ ExecuteQuery(
String^ connectionString,
Query^ query
) abstract
public abstract function ExecuteQuery(
connectionString : String,
query : Query
) : QueryResult[]
パラメーター
- コネクションストリング
型: System.String
データベース接続の接続文字列。
- 問い合わせ
型: Microsoft.Web.Management.DatabaseManager.Query
Query、実行するクエリ ステートメントを含むオブジェクトです。
戻り値
型: 配列<Microsoft.Web.Management.DatabaseManager.QueryResult[]
QueryResult オブジェクトの配列。
注釈
プロバイダーのデータベース クエリを送信するには、プロバイダーで ExecuteQuery メソッドを実装する必要があります。
例示
次のコード サンプルは、データベース クエリからクエリ結果の配列を返す 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;
}
権限
- 直接呼び出し元に対する完全な信頼。 このメンバーは、部分的に信頼されたコードでは使用できません。 詳細については、「部分信頼コード からのライブラリの使用の」を参照してください。