Compartilhar via


Classe de consulta

Representa uma consulta de banco de dados.

Hierarquia de herança

System.Object
Microsoft.Web.Management.DatabaseManager.Query

Namespace :Microsoft.Web.Management.DatabaseManager
assembly : Microsoft.Web.Management.DatabaseManager (em Microsoft.Web.Management.DatabaseManager.dll)

Sintaxe

'Declaration
Public Class Query
'Usage
Dim instance As Query
public class Query
public ref class Query
public class Query

O tipo de consulta expõe os membros a seguir.

Construtores

Tipo de método Nome Descrição
método público Consulta Cria uma nova instância da classe Query.

Propriedades

Tipo de propriedade Nome Descrição
propriedade pública de propriedade pública AllowEdit Obtém ou define um valor que especifica se a edição da consulta é permitida.
propriedade pública de propriedade pública instrução Obtém ou define a instrução SQL para uma consulta.
propriedade pública de propriedade pública Etiqueta Retorna um objeto genérico armazenado na classe Query.

Métodos

Tipo de método Nome Descrição
método público é igual a (Herdado do objeto .)
método Protegido Finalizar (Herdado do objeto .)
método público GetHashCode (Herdado do objeto .)
método público GetType (Herdado do objeto .)
método Protegido MemberwiseClone (Herdado do objeto .)
método público ToString (Herdado do objeto .)

Observações

A classe Query representa uma consulta como um objeto para trabalhar com um banco de dados. Na implementação mais básica, uma consulta consistiria em uma instrução SQL contida na propriedade instrução.

Exemplos

O exemplo de código a seguir ilustra um exemplo método ExecuteQuery que retorna uma matriz de resultados de consulta de uma consulta de banco de dados.


    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;
        }

Acesso thread-safe

Todos os membros estáticos públicos (compartilhados no Visual Basic) desse tipo são thread safe. Não há garantia de que os membros de instância sejam thread safe.

Consulte Também

Referência

namespace Microsoft.Web.Management.DatabaseManager