次の方法で共有


DatabaseProvider.ExecuteQuery メソッド

データベース クエリの実行後にクエリ結果の配列を返します。

名前空間: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.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;
        }

権限

  • 直接呼び出し元に対する完全な信頼。 このメンバーは、部分的に信頼されたコードでは使用できません。 詳細については、「部分信頼コード からのライブラリの使用の」を参照してください。

こちらもご覧ください

リファレンス

DatabaseProvider クラス

Microsoft.Web.Management.DatabaseManager 名前空間の