Udostępnij za pośrednictwem


db_command

Tworzy polecenie OLE DB.

[ db_command( 
   command, 
   name, 
   source_name, 
   hresult, 
   bindings, 
   bulk_fetch)
]

Parametry

  • command
    Ciągu polecenia zawierającego tekst polecenia OLE DB.Jest prosty przykład:

     [ db_command ( command = "Select * from Products" ) ]
    

    Polecenia składnia jest następująca:

    binding parameter block 1
       OLE DB command
    binding parameter block 2
       continuation of OLE DB command
    binding parameter block 3
    ...
    

    A bloku parametrów wiązania jest zdefiniowany następująco:

    **([**bindtype szVar1, szVar2, nVar3 [, ...]]] )

    w przypadku gdy:

    ( wskazuje początek bloku wiązania danych.

    bindtype jest jedną z następujących ciągów bez uwzględniania wielkości liter:

    • [db_column] wiąże każdego zmienne składowe kolumnę w zestawie wierszy.

    • [bindto] (taki sam jak [db_column]).

    • [w] wiąże zmienne jako parametry wejściowe.

    • [out] wiąże zmienne jako parametry wyjściowe.

    • [w, out] wiąże zmienne jako parametry wejścia i wyjścia.

    SzVarX rozpoznawany jako zmienna członka w ramach bieżącego zakresu.

    ) oznacza koniec bloku wiązania danych.

    Jeśli ciąg poleceń zawiera jeden lub więcej Specyfikatory, takich jak [w] [out] lub [wejście/wyjście], db_command tworzy mapę parametru.

    Jeśli ciąg polecenia zawiera jeden lub więcej parametrów, takich jak [db_column] lub [bindto] db_command generuje zestawu wierszy i mapę akcesor do obsługi tych zmiennych związanego.Zobacz db_accessor Aby uzyskać więcej informacji.

    [!UWAGA]

    bindtype składni ibindings parametr są nieprawidłowe, gdy za pomocą db_command na poziomie klasy.

    Oto kilka przykładów wiążących bloki parametru.Poniższy przykład tworzy powiązania m_au_fname i m_au_lname danych członków do au_fname i au_lname kolumny, odpowiednio, z tabeli Autorzy bazy danych pubs:

    TCHAR m_au_fname[21];
    TCHAR m_au_lname[41];
    TCHAR m_state[3] = 'CA';
    
    [db_command (
       command = "SELECT au_fname([bindto]m_au_fname), au_lname([bindto]m_au_lname) " \
       "FROM dbo.authors " \
       "WHERE state = ?([in]m_state)")
    

    ]

  • Nazwa (opcjonalnie)
    Nazwa dojście, które można używać do pracy z zestawu wierszy.Jeśli określisz Nazwa, db_command generuje klasy o określonym Nazwa, które mogą być użyte przy przechodzeniu przez folder zestawu wierszy lub wykonywanie wielu kwerend funkcjonalnych.Jeśli nie określisz Nazwa, nie będzie można przywrócić więcej niż jeden wiersz wyników dla użytkownika.

  • source_name (opcjonalnie)
    CSession Zmiennej lub instancji klasy, która ma db_source atrybut stosowane do niego, na którym wykonuje polecenie.Zobacz db_source.

    db_command kontrole w celu zapewnienia, że zmienna source_name jest poprawny, dlatego należy określonej zmiennej w funkcji lub globalne.

  • hresult(opcjonalnie)
    Określa zmienną, która będzie odbierać HRESULT tego polecenia do bazy danych.Jeśli zmienna nie istnieje, to zostaną automatycznie dodane przez atrybut.

  • wiązania (opcjonalnie)
    Pozwala oddzielić te parametry wiążące polecenia OLE DB.

    Jeżeli określono wartość dla bindings, db_command będzie analizować wartości skojarzone i nie będzie analizować bindtype parametru.To użycie pozwala użyć składni dostawcy OLE DB.Aby wyłączyć analizowania bez powiązania parametry, należy określić wiązania = "".

    Jeśli nie określisz wartości dla bindings, db_command będzie analizować blok parametrów wiązania, szukając "()", a następnie bindtype w nawiasy, przez jednego lub więcej poprzednio zadeklarowanych C++ zmienne składowe, następuje ")".Cały tekst w nawiasach będą okorowane wynikowy polecenia i parametry te będą służyć do konstruowania kolumny i parametr wiązania dla tego polecenia.

  • bulk_fetch(opcjonalnie)
    Wartość całkowitą, która określa liczbę wierszy do pobrania.

    Wartością domyślną jest 1, która określa pobieranie w pojedynczym wierszu (zestaw wierszy będzie typu CRowset).

    Wartość większą niż 1 określa pobieranie wiersza luzem.Pobieranie wierszy zbiorczej odnosi się do zestawów wierszy zbiorczej możliwość pobrania dojścia do wielu wierszy (wierszy będzie typu CBulkRowset i będzie wzywać SetRows z określoną liczbę wierszy).

    Jeśli bulk_fetch jest mniejsza niż jedna SetRows zwróci wartość zero.

Uwagi

db_command tworzy CCommand obiekt, który jest używany przez konsumentów OLE DB do wykonania polecenia.

Można użyć db_command z zakresu klasy lub funkcji; podstawową różnicą jest to zakres CCommand obiektu.Z zakresu funkcji danych, takich jak wiązania wypowiedzieć na końcu funkcji.Zarówno klasa, jak i funkcja zwyczajów zakres obejmuje klasy OLE DB konsumenta szablonu < CCommand >, ale argumenty szablonie różnią się w przypadkach, funkcji i klasy.W przypadku funkcji wiązania zostaną wprowadzone do akcesor obejmuje zmiennych lokalnych, podczas gdy ustali użycie klasy CAccessor-klasy jako argumentu.Gdy używany jako atrybut class, db_command działa w połączeniu z db_column.

db_command może służyć do wykonywania poleceń, które nie zwraca zestawu wyników.

Gdy dostawca atrybut konsumenta stosuje się ten atrybut do klasy, kompilator będzie Zmień nazwę klasy do _YourClassNameakcesor, gdzie YourClassName jest nazwą nadaną klasy i kompilator utworzy również klasy o nazwie YourClassName, który pochodzi od _YourClassNameakcesor.W widoku klasy widać obu klas.

Przykład

Próbka ta określa polecenie, które wybiera pierwsze i ostatnie nazwisko z tabeli, której kolumna stanu odpowiada 'Mazowsze'.db_command tworzy i odczytuje wierszy, na którym można wywoływać wygenerowany przez kreatora funkcje takie jak OpenAll i CloseAll, jak również CRowset Członkowskich funkcje takie jak MoveNext.

Należy zauważyć, że ten kod wymaga podania własne ciąg połączenia, który łączy się z bazą danych pubs.Aby uzyskać informacje, jak to zrobić w środowisku programowania, zobacz Jak: połączenie z bazą danych z Eksploratora serwera i How to: Add New Data Connections in Server Explorer/Database Explorer.

// db_command.h
#include <atlbase.h>
#include <atlplus.h>
#include <atldbcli.h>

#pragma once

[  db_source(L"your connection string"),
   db_command(L" \
      SELECT au_lname, au_fname \
      FROM dbo.authors \
      WHERE state = 'CA'")  ]

struct CAuthors {
   // In order to fix several issues with some providers, the code below may bind
   // columns in a different order than reported by the provider

   DBSTATUS m_dwau_lnameStatus;
   DBSTATUS m_dwau_fnameStatus;
   DBLENGTH m_dwau_lnameLength;
   DBLENGTH m_dwau_fnameLength;

   [ db_column("au_lname", status="m_dwau_lnameStatus", length="m_dwau_lnameLength") ] TCHAR m_au_lname[41];
   [ db_column("au_fname", status="m_dwau_fnameStatus", length="m_dwau_fnameLength") ] TCHAR m_au_fname[21];

   [ db_param("7", paramtype="DBPARAMIO_INPUT") ] TCHAR m_state[3];
   

   void GetRowsetProperties(CDBPropSet* pPropSet) {
      pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
      pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
   }
};

// db_command.cpp
// compile with: /c
#include "db_command.h"

int main(int argc, _TCHAR* argv[]) {
   HRESULT hr = CoInitialize(NULL);

   // Instantiate rowset
   CAuthors rs;

   // Open rowset and move to first row
   strcpy_s(rs.m_state, sizeof(rs.m_state), _T("CA"));
   hr = rs.OpenAll();
   hr = rs.MoveFirst();
   
   // Iterate through the rowset
   while( SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET ) {
      // Print out the column information for each row
      printf("First Name: %s, Last Name: %s\n", rs.m_au_fname, rs.m_au_lname);
      hr = rs.MoveNext();
   }

   rs.CloseAll();
   CoUninitialize();
}

W przykładzie użyto db_source w klasie źródła danych CMySource, i db_command na polecenie klas CCommand1 i CCommand2.

// db_command_2.cpp
// compile with: /c
#include <atlbase.h>
#include <atlplus.h>
#include <atldbcli.h>
// class usage for both db_source and db_command

[  db_source(L"your connection string"),
   db_command(L" \
      SELECT au_lname, au_fname \
      FROM dbo.authors \
      WHERE state = 'CA'")  ]
struct CMySource {
   HRESULT OpenDataSource() {
      return S_OK;
   }
};

[db_command(command = "SELECT * FROM Products")]
class CCommand1 {};

[db_command(command = "SELECT FNAME, LNAME FROM Customers")]
class CCommand2 {};

int main() {
   CMySource s;
   HRESULT hr = s.OpenDataSource();
   if (SUCCEEDED(hr)) {
      CCommand1 c1;
      hr = c1.Open(s);

      CCommand2 c2;
      hr = c2.Open(s);
   }

   s.CloseDataSource();
}

Wymagania

Atrybutu kontekstu

Stosuje się do

Klasa, struct, członka, metody, lokalne

Powtarzalne

Nr

Wymagane atrybuty

Brak

Nieprawidłowe atrybuty

Brak

Aby uzyskać więcej informacji na temat kontekstów atrybutu, zobacz Kontekstów atrybutu.

Zobacz też

Inne zasoby

OLE DB konsumenta atrybutów

Atrybuty autonomiczny

Attributes Samples