OLE DB コンシューマー テンプレート用マクロおよびグローバル関数
OLE DB コンシューマー テンプレートには、次のマクロとグローバル関数が含まれています。
グローバル関数
名前 | 説明 |
---|---|
AtlTraceErrorRecords | エラーが返された場合、OLE DB エラー レコード情報をダンプ デバイスにダンプします。 |
アクセサー マップ マクロ
名前 | 説明 |
---|---|
BEGIN_ACCESSOR | アクセサー エントリの開始位置を示します。 |
BEGIN_ACCESSOR_MAP | アクセサー マップ エントリの開始位置を示します。 |
END_ACCESSOR | アクセサー エントリの終了位置を示します。 |
END_ACCESSOR_MAP | アクセサー マップ エントリの終了位置を示します。 |
列マップ マクロ
名前 | 説明 |
---|---|
BEGIN_COLUMN_MAP | ユーザー レコード クラスの列マップ エントリの開始位置を示します。 |
BLOB_ENTRY | バイナリ ラージ オブジェクト (BLOB) をバインドするために使われます。 |
BLOB_ENTRY_LENGTH | BLOB データ列の長さを報告します。 |
BLOB_ENTRY_LENGTH_STATUS | BLOB データ列の長さと状態を報告します。 |
BLOB_ENTRY_STATUS | BLOB データ列の状態を報告します。 |
BLOB_NAME | バイナリ ラージ オブジェクトを列名を指定して結合するために使われます。 |
BLOB_NAME_LENGTH | BLOB データ列の長さを報告します。 |
BLOB_NAME_LENGTH_STATUS | BLOB データ列の長さと状態を報告します。 |
BLOB_NAME_STATUS | BLOB データ列の状態を報告します。 |
BOOKMARK_ENTRY | 行セットのブックマーク エントリを表します。 ブックマーク エントリは特別な種類の列エントリです。 |
COLUMN_ENTRY | データベース内の特定の列へのバインドを表します。 |
COLUMN_ENTRY_EX | データベース内の特定の列へのバインドを表します。 type、length、precision、scale、status のパラメーターをサポートします。 |
COLUMN_ENTRY_LENGTH | データベース内の特定の列へのバインドを表します。 length 変数をサポートします。 |
COLUMN_ENTRY_LENGTH_STATUS | データベース内の特定の列へのバインドを表します。 status と length のパラメーターをサポートします。 |
COLUMN_ENTRY_PS | データベース内の特定の列へのバインドを表します。 precision と scale のパラメーターをサポートします。 |
COLUMN_ENTRY_PS_LENGTH | データベース内の特定の列へのバインドを表します。 length 変数、precision と scale のパラメーターをサポートします。 |
COLUMN_ENTRY_PS_LENGTH_STATUS | データベース内の特定の列へのバインドを表します。 status と length の変数、precision と scale のパラメーターをサポートします。 |
COLUMN_ENTRY_PS_STATUS | データベース内の特定の列へのバインドを表します。 status 変数、precision と scale のパラメーターをサポートします。 |
COLUMN_ENTRY_STATUS | データベース内の特定の列へのバインドを表します。 status 変数をサポートします。 |
COLUMN_ENTRY_TYPE | データベース内の特定の列へのバインドを表します。 type パラメーターをサポートします。 |
COLUMN_ENTRY_TYPE_SIZE | データベース内の特定の列へのバインドを表します。 type と size のパラメーターをサポートします。 |
COLUMN_NAME | 名前を使ってデータベース内の特定の列へのバインドを表します。 |
COLUMN_NAME_EX | 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型、サイズ、有効桁数、小数点以下桁数、列の長さ、列の状態の指定をサポートします。 |
COLUMN_NAME_LENGTH | 名前を使ってデータベース内の特定の列へのバインドを表します。 列の長さの指定をサポートします。 |
COLUMN_NAME_LENGTH_STATUS | 名前を使ってデータベース内の特定の列へのバインドを表します。 列の長さと状態の指定をサポートします。 |
COLUMN_NAME_PS | 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数と小数点以下桁数の指定をサポートします。 |
COLUMN_NAME_PS_LENGTH | 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の長さの指定をサポートします。 |
COLUMN_NAME_PS_LENGTH_STATUS | 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の長さ、列の状態の指定をサポートします。 |
COLUMN_NAME_PS_STATUS | 名前を使ってデータベース内の特定の列へのバインドを表します。 有効桁数、小数点以下桁数、列の状態の指定をサポートします。 |
COLUMN_NAME_STATUS | 名前を使ってデータベース内の特定の列へのバインドを表します。 列の状態の指定をサポートします。 |
COLUMN_NAME_TYPE | 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型の指定をサポートします。 |
COLUMN_NAME_TYPE_PS | 名前を使ってデータベース内の特定の列へのバインドを表します。 デバッガー、有効桁数、小数点以下桁数の指定をサポートします。 |
COLUMN_NAME_TYPE_SIZE | 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型とサイズの指定をサポートします。 |
COLUMN_NAME_TYPE_STATUS | 名前を使ってデータベース内の特定の列へのバインドを表します。 データ型と列の状態の指定をサポートします。 |
END_COLUMN_MAP | 列マップ エントリの終了位置を示します。 |
コマンド マクロ
名前 | 説明 |
---|---|
DEFINE_COMMAND | CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 指定したアプリケーションの種類に一致する文字列型 (ANSI または Unicode) のみを受け入れます。 DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。 |
DEFINE_COMMAND_EX | CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 ANSI および Unicode アプリケーションをサポートします。 |
パラメーター マップ マクロ
名前 | 説明 |
---|---|
BEGIN_PARAM_MAP | ユーザー レコード クラスのパラメーター マップ エントリの開始位置を示します。 |
END_PARAM_MAP | パラメーター マップ エントリの終了位置を示します。 |
SET_PARAM_TYPE | 入力、出力、または入出力として、SET_PARAM_TYPE マクロの次に COLUMN_ENTRY マクロを指定します。 |
AtlTraceErrorRecords
エラーが返された場合、OLE DB エラー レコード情報をダンプ デバイスにダンプします。
構文
inline void AtlTraceErrorRecords(HRESULT hrErr = S_OK);
パラメーター
hErr
[入力] OLE DB コンシューマー テンプレートのメンバー関数から返される HRESULT。
解説
hErr が S_OK ではない場合、AtlTraceErrorRecords
は OLE DB エラー レコード情報をダンプ デバイス ([出力] ウィンドウの [デバッグ] タブまたはファイル) にダンプします。 プロバイダーから取得されたエラー レコード情報には、各エラー レコード エントリに関する行番号、ソース、説明、ヘルプ ファイル、コンテキスト、GUID が含まれています。 AtlTraceErrorRecords
は、デバッグ ビルドの場合にのみ、この情報をダンプします。 リリース ビルドの場合、最適化された空のスタブになります。詳細については、「CDBErrorInfo クラス」を参照してください。
BEGIN_ACCESSOR
アクセサー エントリの開始位置を示します。
構文
BEGIN_ACCESSOR(num, bAuto)
パラメーター
num
[入力] このアクセサー マップ内のアクセサーのゼロオフセット番号。
bAuto
[入力] このアクセサーが自動アクセサーか手動アクセサーかを指定します。 true
の場合、アクセサーは自動であり、false
の場合、アクセサーは手動です。 自動アクセサーとは、移動操作時にデータがフェッチされることを意味します。
解説
1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。
例
「BEGIN_ACCESSOR_MAP」を参照してください。
BEGIN_ACCESSOR_MAP
アクセサー マップ エントリの開始位置を示します。
構文
BEGIN_ACCESSOR_MAP(x, num)
パラメーター
x
[入力] ユーザー レコード クラスの名前。
num
[入力] このアクセサー マップのアクセサーの数。
解説
1 つの行セットで複数のアクセサーを使う場合は、先頭に BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 アクセサー マップは、END_ACCESSOR_MAP マクロを使って完了します。
ユーザー レコードに含まれるアクセサーが 1 つのみの場合は、 BEGIN_COLUMN_MAPマクロを使用します。
例
class CArtistsAccessor
{
public:
// Data Elements
TCHAR m_szFirstName[21];
TCHAR m_szLastName[31];
short m_nAge;
// Output binding map
BEGIN_ACCESSOR_MAP(CArtistsAccessor, 2)
BEGIN_ACCESSOR(0, true)
COLUMN_ENTRY(1, m_szFirstName)
COLUMN_ENTRY(2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR(1, false) // Not an auto accessor
COLUMN_ENTRY(3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
HRESULT OpenDataSource()
{
CDataSource _db;
_db.Open();
return m_session.Open(_db);
}
void CloseDataSource()
{
m_session.Close();
}
CSession m_session;
DEFINE_COMMAND_EX(CArtistsAccessor, L" \
SELECT \
FirstName, \
LastName, \
Age \
FROM Artists")
};
END_ACCESSOR
アクセサー エントリの終了位置を示します。
構文
END_ACCESSOR()
解説
1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。
例
「BEGIN_ACCESSOR_MAP」を参照してください。
END_ACCESSOR_MAP
アクセサー マップ エントリの終了位置を示します。
構文
END_ACCESSOR_MAP()
解説
1 つの行セットで複数のアクセサーを使う場合は、BEGIN_ACCESSOR_MAP を指定し、個々のアクセサーに対して BEGIN_ACCESSOR マクロを使う必要があります。 BEGIN_ACCESSOR マクロは、END_ACCESSOR マクロを使って完了します。 BEGIN_ACCESSOR_MAP マクロは、END_ACCESSOR_MAP マクロを使って完了します。
例
「BEGIN_ACCESSOR_MAP」を参照してください。
BEGIN_COLUMN_MAP
列マップ エントリの先頭を示します。
構文
BEGIN_COLUMN_MAP(x)
パラメーター
x
[入力] CAccessor
から派生したユーザー レコード クラスの名前。
解説
このマクロは、行セットに対してアクセサーが 1 つしか必要ない場合に使用します。 1 つの行セットに対して複数のアクセサーが必要な場合は、 BEGIN_ACCESSOR_MAPを使用します。
BEGIN_COLUMN_MAP マクロは END_COLUMN_MAP マクロを使って完了します。 このマクロは、ユーザー レコードで 1 つのアクセサーだけが必要な場合に使用します。
列は、バインドする行セットのフィールドに相当します。
例
列およびパラメーター マップのコード例を次に示します。
BLOB_ENTRY
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。
構文
BLOB_ENTRY(nOrdinal, IID, flags, data)
パラメーター
nOrdinal
[入力] 列番号。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
例
BLOB の取得方法に関するページを参照してください。
BLOB_ENTRY_LENGTH
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の長さ (バイト単位) も取得する点が異なります。
構文
BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length)
パラメーター
nOrdinal
[入力] 列番号。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。
例
BLOB の取得方法に関するページを参照してください。
BLOB_ENTRY_LENGTH_STATUS
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の長さと状態も取得する点が異なります。
構文
BLOB_ENTRY_LENGTH_STATUS(
nOrdinal,
IID,
flags,
data,
length,
status )
パラメーター
nOrdinal
[入力] 列番号。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。
status
[出力] BLOB データ列の状態。
例
BLOB の取得方法に関するページを参照してください。
BLOB_ENTRY_STATUS
BEGIN_COLUMN_MAP または BEGIN_ACCESSOR_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは BLOB 列の状態も取得する点が異なります。
構文
BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status)
パラメーター
nOrdinal
[入力] 列番号。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[出力] BLOB フィールドの状態。
例
BLOB の取得方法に関するページを参照してください。
BLOB_NAME
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_ENTRY と似ていますが、このマクロは列番号ではなく列名を受け取る点が異なります。
構文
BLOB_NAME(pszName, IID, flags, data )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
例
BLOB の取得方法に関するページを参照してください。
BLOB_NAME_LENGTH
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の長さ (バイト単位) も取得する点が異なります。
構文
BLOB_NAME_LENGTH(pszName, IID, flags, data, length )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。
BLOB_NAME_LENGTH_STATUS
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の長さと状態も取得する点が異なります。
構文
BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[出力] BLOB 列の (実際の) 長さをバイト単位で取得します。
status
[出力] BLOB フィールドの状態。
BLOB_NAME_STATUS
BEGIN_COLUMN_MAP と END_COLUMN_MAP と共に使い、バイナリ ラージ オブジェクト (BLOB) をバインドします。 BLOB_NAME と似ていますが、このマクロは BLOB データ列の状態も取得する点が異なります。
構文
BLOB_NAME_STATUS(pszName, IID, flags, data, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
IID
[入力] BLOB を取得するために使う IDD_ISequentialStream
などのインターフェイス GUID。
flags
[入力] OLE 構造化ストレージ モデルで定義されているストレージモード フラグ (たとえば、STGM_READ
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[出力] BLOB フィールドの状態。
BOOKMARK_ENTRY
ブックマーク列をバインドします。
構文
BOOKMARK_ENTRY(variable)
パラメーター
variable
[入力] ブックマーク列にバインドされる変数。
例
class CArtistsBookmark
{
public:
// Data Elements
CBookmark<4> m_bookmark;
short m_nAge;
TCHAR m_szFirstName[21];
TCHAR m_szLastName[31];
// Output binding map
BEGIN_COLUMN_MAP(CArtistsBookmark)
BOOKMARK_ENTRY(m_bookmark)
COLUMN_ENTRY(1, m_nAge)
COLUMN_ENTRY(2, m_szFirstName)
COLUMN_ENTRY(3, m_szLastName)
END_COLUMN_MAP()
void GetRowsetProperties(CDBPropSet* pPropSet)
{
pPropSet->AddProperty(DBPROP_BOOKMARKS, true);
}
HRESULT OpenDataSource()
{
CDataSource _db;
_db.Open();
return m_session.Open(_db);
}
void CloseDataSource()
{
m_session.Close();
}
CSession m_session;
DEFINE_COMMAND_EX(CArtistsBookmark, L" \
SELECT \
Age, \
FirstName, \
LastName \
FROM Artists")
};
詳細については、「ブックマークを使用する」と「CBookmark クラス」を参照してください。
COLUMN_ENTRY
行セット内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY(nOrdinal, data)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_ENTRY マクロは次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
例
マクロのトピック「BEGIN_COLUMN_MAP」と「BEGIN_ACCESSOR_MAP」の例を参照してください。
COLUMN_ENTRY_EX
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
wType
[入力] データ型。
nLength
[入力] バイト単位のデータ サイズ。
nPrecision
[入力] データの取得時に wType が DBTYPE_NUMERIC
である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。
nScale
[入力] データの取得時に wType が DBTYPE_NUMERIC
または DBTYPE_DECIMAL
である場合に使う小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_ENTRY_EX マクロは次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
例
「BOOKMARK_ENTRY」を参照してください。
COLUMN_ENTRY_LENGTH
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_LENGTH(nOrdinal, data, length)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 1 から始まる列番号。 ブックマークは列 0 に対応します。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
解説
このマクロは length 変数をサポートします。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_LENGTH_STATUS
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
長さと状態の変数をサポートする場合は、このマクロを使います。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_PS
行セット内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
バインドする列の有効桁数と小数点以下桁数を指定できます。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_PS_LENGTH
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 1 から始まる列番号。 ブックマークは列 0 に対応します。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
解説
バインドする列の有効桁数と小数点以下桁数を指定できます。 このマクロは length 変数をサポートします。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_PS_LENGTH_STATUS
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
バインドする列の有効桁数と小数点以下桁数を指定できます。 長さと状態の変数をサポートする場合は、このマクロを使います。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_PS_STATUS
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[入力] 列の状態にバインドされる変数。
解説
バインドする列の有効桁数と小数点以下桁数を指定できます。 このマクロは、status 変数をサポートします。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_STATUS
データベース内の特定の列に対する行セットのバインドを表します。
構文
COLUMN_ENTRY_STATUS(nOrdinal, data, status)
パラメーター
「OLE DB プログラマーズ リファレンス」の「DBBINDING」を参照してください。
nOrdinal
[入力] 列番号。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[入力] 列の状態にバインドされる変数。
解説
このマクロは、status 変数をサポートします。 次の場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_ENTRY_TYPE
データベース内の特定の列へのバインドを表します。 type パラメーターをサポートします。
構文
COLUMN_ENTRY_TYPE (nOrdinal, wType, data)
パラメーター
nOrdinal
[入力] 列番号。
wType
[入力] 列エントリのデータ型。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
このマクロは、データ型を指定する手段を提供する COLUMN_ENTRY マクロの特殊なバリアントです。
COLUMN_ENTRY_TYPE_SIZE
データベース内の特定の列へのバインドを表します。 type と size のパラメーターをサポートします。
構文
COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data)
パラメーター
nOrdinal
[入力] 列番号。
wType
[入力] 列エントリのデータ型。
nLength
[入力] 列エントリのバイト単位のサイズ。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
このマクロは、データのサイズと型を指定する手段を提供する COLUMN_ENTRY マクロの特殊なバリアントです。
COLUMN_NAME
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_ENTRY と似ていますが、このマクロは列番号ではなく列名を受け取る点が異なります。
構文
COLUMN_NAME(pszName, data)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロは COLUMN_ENTRY と同じ場所で使われます。
BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロの間。
BEGIN_ACCESSOR マクロと END_ACCESSOR マクロの間。
BEGIN_PARAM_MAP マクロと END_PARAM_MAP マクロの間。
COLUMN_NAME_EX
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型、サイズ、有効桁数、小数点以下桁数、列の長さ、列の状態も受け取る点が異なります。
構文
COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
wType
[入力] データ型。
nLength
[入力] バイト単位のデータ サイズ。
nPrecision
[入力] データの取得時に wType が DBTYPE_NUMERIC
である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。
nScale
[入力] データの取得時に wType が DBTYPE_NUMERIC
または DBTYPE_DECIMAL
である場合に使う小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_LENGTH
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の長さも受け取る点が異なります。
構文
COLUMN_NAME_LENGTH(pszName, data, length)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_LENGTH_STATUS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の長さと列の状態も受け取る点が異なります。
構文
COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_PS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数と小数点以下桁数も受け取る点が異なります。
構文
COLUMN_NAME_PS(pszName, nPrecision, nScale, data )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_PS_LENGTH
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の長さも受け取る点が異なります。
構文
COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_PS_LENGTH_STATUS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の長さ、列の状態も受け取る点が異なります。
構文
COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
length
[入力] 列の長さにバインドされる変数。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_PS_STATUS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは有効桁数、小数点以下桁数、列の状態も受け取る点が異なります。
構文
COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
nPrecision
[入力] バインドする列の最大有効桁数。
nScale
[入力] バインドする列の小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_STATUS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロは列の状態も受け取る点が異なります。
構文
COLUMN_NAME_STATUS(pszName, data, status )
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
data
[入力] ユーザー レコードの対応するデータ メンバー。
status
[入力] 列の状態にバインドされる変数。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_TYPE
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型も受け取る点が異なります。
構文
COLUMN_NAME_TYPE(pszName, wType, data)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
wType
[入力] データ型。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_TYPE_PS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型、有効桁数、小数点以下桁数も受け取る点が異なります。
構文
COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
wType
[入力] データ型。
nPrecision
[入力] データの取得時に wType が DBTYPE_NUMERIC
である場合に使う最大有効桁数。 それ以外の場合、このパラメーターは無視されます。
nScale
[入力] データの取得時に wType が DBTYPE_NUMERIC
または DBTYPE_DECIMAL
である場合に使う小数点以下桁数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_TYPE_SIZE
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型とサイズも受け取る点が異なります。
構文
COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
wType
[入力] データ型。
nLength
[入力] バイト単位のデータ サイズ。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
COLUMN_NAME_TYPE_STATUS
行セット内の特定の列に対する行セットのバインドを表します。 COLUMN_NAME と似ていますが、このマクロはデータ型と列の状態も受け取る点が異なります。
構文
COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data)
パラメーター
pszName
[入力] 列名へのポインター。 名前は Unicode 文字列である必要があります。 これを実現するには、名前の前に 'L' を付けます (例: L"MyColumn"
)。
wType
[入力] データ型。
status
[入力] 列の状態にバインドされる変数。
data
[入力] ユーザー レコードの対応するデータ メンバー。
解説
COLUMN_NAME_* マクロが使われる場所については、「COLUMN_NAME」を参照してください。
END_COLUMN_MAP
列マップ エントリの終了位置を示します。
構文
END_COLUMN_MAP()
解説
行セットの 1 つのアクセサーに使われます。 BEGIN_COLUMN_MAP マクロは END_COLUMN_MAP マクロを使って完了します。
例
「BEGIN_COLUMN_MAP」を参照してください。
DEFINE_COMMAND
CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 指定したアプリケーションの種類に一致する文字列型 (ANSI または Unicode) のみを受け入れます。
Note
DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。
構文
DEFINE_COMMAND(x, szCommand)
パラメーター
x
[入力] ユーザー レコード (コマンド) クラスの名前。
szCommand
[入力] CCommand の使用時に行セットの作成に使うコマンド文字列。
解説
CCommand::Open メソッドでコマンド テキストを指定しない場合、指定したコマンド文字列が既定値として使われます。
このマクロは、アプリケーションを ANSI としてビルドした場合には ANSI 文字列を、アプリケーションを Unicode としてビルドした場合は Unicode 文字列を受け入れます。 DEFINE_COMMAND ではなく DEFINE_COMMAND_EX を使うことをお勧めします。なぜなら、ANSI または Unicode というアプリケーションの種類に関係なく、後者は Unicode 文字列を受け入れることができるからです。
例
「BOOKMARK_ENTRY」を参照してください。
DEFINE_COMMAND_EX
CCommand クラスを使う場合に、行セットの作成に使うコマンドを指定します。 Unicode と ANSI のアプリケーションをサポートします。
構文
DEFINE_COMMAND_EX(x, wszCommand)
パラメーター
x
[入力] ユーザー レコード (コマンド) クラスの名前。
wszCommand
[入力] CCommand の使用時に行セットの作成に使うコマンド文字列。
解説
CCommand::Open メソッドでコマンド テキストを指定しない場合、指定したコマンド文字列が既定値として使われます。
このマクロは、アプリケーションの種類に関係なく、Unicode 文字列を受け入れます。 このマクロの方が DEFINE_COMMAND よりも推奨されます。なぜなら、ANSI アプリケーションだけでなく、Unicode もサポートするためです。
例
「BOOKMARK_ENTRY」を参照してください。
BEGIN_PARAM_MAP
パラメーター マップ エントリの開始位置を示します。
構文
BEGIN_PARAM_MAP(x)
パラメーター
x
[入力] ユーザー レコード クラスの名前。
解説
パラメーターはコマンドから使われます。
例
BEGIN_COLUMN_MAP マクロの例を参照してください。
END_PARAM_MAP
パラメーター マップ エントリの終了位置を示します。
構文
END_PARAM_MAP()
例
BEGIN_PARAM_MAP マクロの例を参照してください。
SET_PARAM_TYPE
入力、出力、または入出力として、SET_PARAM_TYPE マクロの次に COLUMN_ENTRY マクロを指定します。
構文
SET_PARAM_TYPE(type)
パラメーター
type
[入力] 設定するパラメーターの種類。
解説
プロバイダーは、基になるデータ ソースによってサポートされているパラメーター入出力タイプだけをサポートします。 type は、1 つ以上の DBPARAMIO
値の組み合わせです (「OLE DB プログラマーズ リファレンス」の「DBBINDING 構造体」を参照してください)。
DBPARAMIO_NOTPARAM
アクセサーにはパラメーターがありません。 通常、行アクセサーでeParamIO
をこの値に設定して、パラメーターが無視されることをユーザーに知らせます。DBPARAMIO_INPUT
入力パラメーター。DBPARAMIO_OUTPUT
出力パラメーター。DBPARAMIO_INPUT | DBPARAMIO_OUTPUT
パラメーターが出力パラメーターと入力パラメーターの両方である場合。
例
class CArtistsProperty
{
public:
short m_nReturn;
short m_nAge;
TCHAR m_szFirstName[21];
TCHAR m_szLastName[31];
BEGIN_PARAM_MAP(CArtistsProperty)
SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
COLUMN_ENTRY(1, m_nReturn)
SET_PARAM_TYPE(DBPARAMIO_INPUT)
COLUMN_ENTRY(2, m_nAge)
END_PARAM_MAP()
BEGIN_COLUMN_MAP(CArtistsProperty)
COLUMN_ENTRY(1, m_szFirstName)
COLUMN_ENTRY(2, m_szLastName)
END_COLUMN_MAP()
HRESULT OpenDataSource()
{
CDataSource _db;
_db.Open();
return m_session.Open(_db);
}
void CloseDataSource()
{
m_session.Close();
}
CSession m_session;
DEFINE_COMMAND_EX(CArtistsProperty, L" \
{ ? = SELECT Age FROM Artists WHERE Age < ? }")
};
要件
ヘッダー: atldbcli.h
関連項目
OLE DB コンシューマー テンプレート用マクロおよびグローバル関数
OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス