Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższy przykład wystawia proste kwerendy parametryczne, który pobiera rekordy z polem wieku (to jest większa niż 30) z tabeli w bazie danych programu Microsoft Access.Aby obsługiwać parametr, rekordu użytkownika musi mieć dodatkowe mapy.Następujący kod w projekcie ATL używa CCommand klasy a nie CTable klasa używana w poprzednim przykładzie, Przechodzenie przez prosty zestaw wierszy.
#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;
}
Rekord użytkownika CArtists, wygląda podobnie do następującej:
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()
};