Sdílet prostřednictvím


db_command

Vytvoří také příkaz OLE DB.

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

Parametry

  • command
    Příkazový řetězec obsahující text příkazu OLE DB.Je jednoduchý příklad:

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

    Příkaz syntaxe je následující:

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

    A blok parametrů vazby je definován takto:

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

    kde:

    ( označí začátek bloku dat vazby.

    bindtype**[]** je jeden z následujících řetězců velká a malá písmena:

    • [db_column] sváže každé proměnné členů sloupce sady řádků.

    • [bindto] (stejné jako [db_column]).

    • [v] váže členské proměnné jako vstupní parametry.

    • [výstup] váže členské proměnné jako výstupní parametry.

    • [v, mimo] váže členské proměnné jako vstupní a výstupní parametry.

    SzVarX řeší členské proměnné v aktuálním oboru.

    ) označuje konec bloku dat vazby.

    Pokud příkazový řetězec obsahuje jeden nebo více identifikátorů jako [v] [out] nebo [v/out], db_command vytvoří parametr mapy.

    Pokud příkazový řetězec obsahuje jeden nebo více parametrů, například [db_column] nebo [bindto] db_command generuje sadu řádků a mapování přístupový objekt služby těchto vázaných proměnných.Viz db_accessor Další informace.

    [!POZNÁMKA]

    bindtype syntaxe abindings parametru nejsou platné, pokud používáte db_command na úrovni třídy.

    Zde jsou některé příklady vazby bloků parametrů.Následující příklad vytvoří vazbu m_au_fname a m_au_lname data členů au_fname a au_lname sloupce, z tabulky v databázi pubs Autoři:

    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)")
    

    ]

  • název (volitelné)
    Název popisovače slouží k práci se sadou řádků.Pokud zadáte název, db_command generuje třídy zadaným název, který lze procházet sadu řádků nebo spouštět více akční dotazy.Pokud nezadáte název, nebude možné vrátit více než jeden řádek výsledky uživateli.

  • source_name (volitelné)
    CSession Proměnné nebo instance třídy, která má db_source atribut aplikované na kterém je proveden.Viz db_source.

    db_command kontroly, aby proměnná pro source_name je platný, takže zadané proměnné by měly být ve funkci nebo globálním rozsahem.

  • hresult (volitelné)
    Identifikuje proměnnou, která bude přijímat HRESULT tohoto příkazu databáze.Pokud proměnná neexistuje, jej budou automaticky vkládány atributem.

  • vazby (volitelné)
    Umožňuje oddělit parametry vazby z příkazu OLE DB.

    Pokud zadáte hodnotu pro bindings, db_command bude analyzovat přidružené hodnoty a bude analyzovat bindtype parametr.Toto použití umožňuje použít syntaxi zprostředkovatele OLE DB.Chcete-li zakázat analýzu bez vazby parametry, zadejte vazby = "".

    Pokud neurčíte hodnotu pro bindings, db_command bude analyzovat blok parametrů vazby, hledají '()", následuje bindtype**[]** v závorkách následovaný jedním nebo více dříve deklarované C++ členské proměnné, následuje")".Veškerý text mezi závorkami bude odstraněno z výsledné příkazu a tyto parametry se použije k vytvoření vazby na sloupce a parametr příkazu.

  • bulk_fetch(volitelné)
    Celočíselnou hodnotu, která určuje počet řádků, které chcete načíst.

    Výchozí hodnota je 1, která určuje načítání jednoho řádku (řádků bude typu CRowset).

    Určuje hodnotu větší než 1, načítání řádku hromadné.Načítání hromadné řádek odkazuje na schopnost sady řádků hromadného načtení popisovače více řádků (řádků bude typu CBulkRowset a bude volat SetRows s určený počet řádků).

    Pokud bulk_fetch je menší než jedna, SetRows vrátí nulu.

Poznámky

db_command vytvoří CCommand objekt, který používá příkaz spotřebitele OLE DB.

Můžete použít db_command s rozsahem třídy nebo funkci; Hlavní rozdíl je v působnosti CCommand objektu.S rozsah funkce ukončit data jako například vazby na konci funkce.Rozsah použití třídy a funkce zahrnuje třída Šablona spotřebitele OLE DB < CCommand >, ale liší se šablona argumenty funkce a třídy v případech.V případě funkce vazby budou provedeny přístupový objekt , zatímco použití třídy odvodí zahrnuje místní proměnné CAccessor-odvozené třídy jako argument.Při použití jako atribut třídy, db_command spolu s db_column.

db_command lze použít příkazy, které nevrací sadu výsledků.

Pokud zprostředkovatel spotřebitele atribut použije tento atribut třídy, kompilátor bude přejmenovat třídu _YourClassNamepřístupový objekt, kde YourClassName je název třídy a kompilátor vytvoří také třídy nazvané YourClassName, který je odvozen z _YourClassNamepřístupový objekt.Třída zobrazení se zobrazí obě třídy.

Příklad

Tento příklad definuje příkaz, který vybere první a poslední jméno z tabulky, kde stát sloupec odpovídá "CA".db_command vytvoří a čte sadu řádků, na které můžete volat funkce Průvodce generována jako OtevřenéVeškerý a CloseAll, stejně jako CRowset členské funkce, jako například MoveNext.

Všimněte si, že tento kód vyžaduje poskytnutí vlastní řetězec připojení, který se připojuje k databázi pubs.Informace o tom, jak ve vývojovém prostředí, viz Postupy: Připojení k databázi z průzkumníku serveru a 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();
}

V tomto příkladu db_source na Třída zdroje dat CMySource, a db_command na příkaz třídy CCommand1 a 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();
}

Požadavky

Atribut kontextu

V aplikacích

Třída, struct, člen, metoda, místní

Opakovatelné

Ne

Požadované atributy

Žádná

Neplatné atributy

Žádná

Další informace o kontextech atribut, viz Kontexty atribut.

Viz také

Další zdroje

Atributy příjemce technologie OLE DB

Samostatné atributy

Attributes Samples