Freigeben über


Ausgeben einer parametrisierten Abfrage

Das folgende Beispiel führt eine einfache parametrisierte Abfrage aus, die Datensätze mit einem Feld für das Alter (mit einem Wert über 30) aus einer Microsoft Access-Datenbank abruft. Zur Unterstützung der Parameter muss der Datensatz über eine zusätzliche Zuordnung verfügen. Der folgende Code in einem ATL-Projekt verwendet die CCommand-Klasse anstelle der im vorherigen Beispiel Durchlaufen eines einfachen Rowsets verwendeten CTable-Klasse.

#include <atldbcli.h>

CDataSource connection;
CSession session;
CCommand<CAccessor<CArtists> > artists;

// Open the connection, session, and table, specifying authentication 
// using Windows NT integrated security. Hard-coding a password is a major 
// security weakness.
connection.Open(CLSID_MSDASQL, "NWind", NULL, NULL, 
DBPROP_AUTH_INTEGRATED);
session.Open(connection);

// Set the parameter for the query
artists.m_nAge = 30;
artists.Open(session, "select * from artists where age > ?");

// Get data from the rowset
while (artists.MoveNext() == S_OK)
{
   cout << artists.m_szFirstName;
   cout << artists.m_szLastName;
}

Der Benutzerdatensatz CArtists sieht wie folgt aus:

class CArtists
{
public:
// Data Elements
   CHAR m_szFirstName[20];
   CHAR m_szLastName[30];
   short m_nAge;
 
// Column binding map
BEGIN_COLUMN_MAP(CArtists)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
   COLUMN_ENTRY(3, m_nAge)
END_COLUMN_MAP()
 
// Parameter binding map
BEGIN_PARAM_MAP(CArtists)
   SET_PARAM_TYPE(DBPARAMIO_INPUT)
   COLUMN_ENTRY(1, m_nAge)
END_PARAM_MAP()
};

Siehe auch

Referenz

Arbeiten mit OLE DB-Consumervorlagen