233 lines
6.4 KiB
C
233 lines
6.4 KiB
C
#pragma once
|
|
//-------------------------------------------------------------------------------------------------
|
|
// <copyright file="eseutil.h" company="Outercurve Foundation">
|
|
// Copyright (c) 2004, Outercurve Foundation.
|
|
// This software is released under Microsoft Reciprocal License (MS-RL).
|
|
// The license and further copyright text can be found in the file
|
|
// LICENSE.TXT at the root directory of the distribution.
|
|
// </copyright>
|
|
//
|
|
// <summary>
|
|
// Header for Extensible Storage Engine (Jetblue) helper functions.
|
|
// </summary>
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define ReleaseEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); }
|
|
#define ReleaseNullEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); pqh = NULL; }
|
|
|
|
struct ESE_COLUMN_SCHEMA
|
|
{
|
|
JET_COLUMNID jcColumn;
|
|
LPCWSTR pszName;
|
|
JET_COLTYP jcColumnType;
|
|
BOOL fKey; // If this column is part of the key of the table
|
|
BOOL fFixed;
|
|
BOOL fNullable;
|
|
BOOL fAutoIncrement;
|
|
};
|
|
|
|
struct ESE_TABLE_SCHEMA
|
|
{
|
|
JET_TABLEID jtTable;
|
|
LPCWSTR pszName;
|
|
DWORD dwColumns;
|
|
ESE_COLUMN_SCHEMA *pcsColumns;
|
|
};
|
|
|
|
struct ESE_DATABASE_SCHEMA
|
|
{
|
|
DWORD dwTables;
|
|
ESE_TABLE_SCHEMA *ptsTables;
|
|
};
|
|
|
|
enum ESE_QUERY_TYPE
|
|
{
|
|
ESE_QUERY_EXACT,
|
|
ESE_QUERY_FROM_TOP,
|
|
ESE_QUERY_FROM_BOTTOM
|
|
};
|
|
|
|
typedef void* ESE_QUERY_HANDLE;
|
|
|
|
HRESULT DAPI EseBeginSession(
|
|
__out JET_INSTANCE *pjiInstance,
|
|
__out JET_SESID *pjsSession,
|
|
__in_z LPCWSTR pszInstance,
|
|
__in_z LPCWSTR pszPath
|
|
);
|
|
HRESULT DAPI EseEndSession(
|
|
__in JET_INSTANCE jiInstance,
|
|
__in JET_SESID jsSession
|
|
);
|
|
HRESULT DAPI EseEnsureDatabase(
|
|
__in JET_SESID jsSession,
|
|
__in_z LPCWSTR pszFile,
|
|
__in ESE_DATABASE_SCHEMA *pdsSchema,
|
|
__out JET_DBID* pjdbDb,
|
|
__in BOOL fExclusive,
|
|
__in BOOL fReadonly
|
|
);
|
|
HRESULT DAPI EseCloseDatabase(
|
|
__in JET_SESID jsSession,
|
|
__in JET_DBID jdbDb
|
|
);
|
|
HRESULT DAPI EseCreateTable(
|
|
__in JET_SESID jsSession,
|
|
__in JET_DBID jdbDb,
|
|
__in_z LPCWSTR pszTable,
|
|
__out JET_TABLEID *pjtTable
|
|
);
|
|
HRESULT DAPI EseOpenTable(
|
|
__in JET_SESID jsSession,
|
|
__in JET_DBID jdbDb,
|
|
__in_z LPCWSTR pszTable,
|
|
__out JET_TABLEID *pjtTable
|
|
);
|
|
HRESULT DAPI EseCloseTable(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable
|
|
);
|
|
HRESULT DAPI EseEnsureColumn(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in_z LPCWSTR pszColumnName,
|
|
__in JET_COLTYP jcColumnType,
|
|
__in ULONG ulColumnSize,
|
|
__in BOOL fFixed,
|
|
__in BOOL fNullable,
|
|
__out_opt JET_COLUMNID *pjcColumn
|
|
);
|
|
HRESULT DAPI EseGetColumn(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in_z LPCWSTR pszColumnName,
|
|
__out JET_COLUMNID *pjcColumn
|
|
);
|
|
HRESULT DAPI EseMoveCursor(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in LONG lRow
|
|
);
|
|
HRESULT DAPI EseDeleteRow(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable
|
|
);
|
|
HRESULT DAPI EseBeginTransaction(
|
|
__in JET_SESID jsSession
|
|
);
|
|
HRESULT DAPI EseRollbackTransaction(
|
|
__in JET_SESID jsSession,
|
|
__in BOOL fAll
|
|
);
|
|
HRESULT DAPI EseCommitTransaction(
|
|
__in JET_SESID jsSession
|
|
);
|
|
HRESULT DAPI EsePrepareUpdate(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in ULONG ulPrep
|
|
);
|
|
HRESULT DAPI EseFinishUpdate(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in BOOL fSeekToInsertedRecord
|
|
);
|
|
HRESULT DAPI EseSetColumnBinary(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__in_bcount(cbBuffer) const BYTE* pbBuffer,
|
|
__in SIZE_T cbBuffer
|
|
);
|
|
HRESULT DAPI EseSetColumnDword(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__in DWORD dwValue
|
|
);
|
|
HRESULT DAPI EseSetColumnBool(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__in BOOL fValue
|
|
);
|
|
HRESULT DAPI EseSetColumnString(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__in_z LPCWSTR pszValue
|
|
);
|
|
HRESULT DAPI EseSetColumnEmpty(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn
|
|
);
|
|
HRESULT DAPI EseGetColumnBinary(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
|
|
__inout SIZE_T* piBuffer
|
|
);
|
|
HRESULT DAPI EseGetColumnDword(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__out DWORD *pdwValue
|
|
);
|
|
HRESULT DAPI EseGetColumnBool(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__out BOOL *pfValue
|
|
);
|
|
HRESULT DAPI EseGetColumnString(
|
|
__in JET_SESID jsSession,
|
|
__in ESE_TABLE_SCHEMA tsTable,
|
|
__in DWORD dwColumn,
|
|
__out LPWSTR *ppszValue
|
|
);
|
|
|
|
// Call this once for each key column in the table
|
|
HRESULT DAPI EseBeginQuery(
|
|
__in JET_SESID jsSession,
|
|
__in JET_TABLEID jtTable,
|
|
__in ESE_QUERY_TYPE qtQueryType,
|
|
__out ESE_QUERY_HANDLE *peqhHandle
|
|
);
|
|
HRESULT DAPI EseSetQueryColumnBinary(
|
|
__in ESE_QUERY_HANDLE eqhHandle,
|
|
__in_bcount(cbBuffer) const BYTE* pbBuffer,
|
|
__in SIZE_T cbBuffer,
|
|
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
|
|
);
|
|
HRESULT DAPI EseSetQueryColumnDword(
|
|
__in ESE_QUERY_HANDLE eqhHandle,
|
|
__in DWORD dwData,
|
|
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
|
|
);
|
|
HRESULT DAPI EseSetQueryColumnBool(
|
|
__in ESE_QUERY_HANDLE eqhHandle,
|
|
__in BOOL fValue,
|
|
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
|
|
);
|
|
HRESULT DAPI EseSetQueryColumnString(
|
|
__in ESE_QUERY_HANDLE eqhHandle,
|
|
__in_z LPCWSTR pszString,
|
|
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
|
|
);
|
|
HRESULT DAPI EseFinishQuery(
|
|
__in ESE_QUERY_HANDLE eqhHandle
|
|
);
|
|
// Once all columns have been set up, call this and read the result
|
|
HRESULT DAPI EseRunQuery(
|
|
__in ESE_QUERY_HANDLE eqhHandle
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|