DOCLIENT.H

//-------------------------------------------------------------------- 
// Microsoft OLE DB ISAPI Sample
// Copyight(c) 1996 Microsoft Corporation. All Rights Reserved.
//
// @doc
//
// @module DOCLIENT.H | Headers for DOCLIENT.CPP
//
// @rev 1 | 06-11-96 | Created
//

#include <afxisapi.h>
//Constants
#define MAXBUFLEN256//display buffer size
#define MAXDATALEN25//maximum data length per column
#define NUMROWS_CHUNK20 // Number of Rows to Grab at a Time
#define DEFAULT_CBMAXLENGTH40 // cbMaxLength for binding
#define COLUMN_ALIGNVAL8
#define MAX_ROW_SIZE1000
#define NUMBER_OF_PROPERTY_SETS1


#define ROUND_UP( Size, Amount ) (((DWORD)(Size) + ((Amount) - 1)) & ~((Amount) - 1))
//Data Structures ****************************************************************
struct COLUMNDATA
{
DWORDdwLength;// length of data (not space allocated)
DBSTATUSwStatus;// status of column
SHORT wReserved; // padding
BYTEbData[1];// data here and beyond
};


//Exposed Functions ****************************************************************
HRESULT GetAndWrite
(
IRowset*pIRowset,
ULONG cMaxRowSize,
HACCESSOR hAccessor,
DBBINDING*rgBind,
ULONGcBind,
DBCOLUMNINFO*pColumnInfo,
ULONGcCol,
CHttpServerContext* pCtxt
);


HRESULT ConnectDB
(
IDBCreateCommand **ppIDBCreateCommand_out, //@param |
LPCSTR pstrDNS, //@param | Login Inforamtion
LPCSTR pstrUserName, //@param | Login Inforamtion
LPCSTR pstrPassword, //@param | Login Inforamtion
CHttpServerContext* pCtxt //@param|
);


HRESULT SetAndExecute
(
WCHAR * wszSQLCommand, //@param IN | SQL command
IDBCreateCommand * pIDBCreateCommand, //@param IN |
IRowset** ppIRowset_out, //@param OUT | Pointer to set of rows
DBCOLUMNINFO ** ppColumnInfo_out, //@param OUT | array of DBCOLUMNINFO structures
WCHAR ** ppStringBuffer_out,
ULONG * pcCol, //@param OUT | Number of columns
DBBINDING ** rgBind, //@param
ULONG * pcBind, //@param
HACCESSOR * phAccessor, //@param
ULONG * pcbMaxRowSize, //@param
CHttpServerContext* pCtxt //@param IN | Server Context
);

void FreeEnvironment
(
IRowset*pIRowset, //@param IN | Pointer to set of rows
HACCESSOR hAccessor, //@param IN | Accessor Handle
DBCOLUMNINFO*pColumnInfo, //@param IN | DBCOLUMNINFO array pointer
WCHAR * pStringBuffer //@param IN | String Buffer contining the info about columns
);



//Internal functions ************************************************************
void PrintErrorInfo
(
IUnknown * pBadObject, //@param IN | Pointer to the object where error happened
REFIID IID_BadIntereface, //@param IN | Interface that caused the error
CHttpServerContext* pCtxt//@param IN | Output place
);

HRESULT SetInitializationData
(
LPCSTR pstrDNS,//@param IN | DNS Name
LPCSTR pstrUserName,//@param IN | User Name
LPCSTR pstrPassword,//@param IN | Passwd
DBPROPSET rgPropertySet[],//@param OUT | Array of propery sets (only one)
CHttpServerContext* pCtxt//@param IN | Web page context
);

HRESULT SetupBindings
(
ULONG cCol,
DBCOLUMNINFO*pColumnInfo,
DBBINDING*rgBind_out,
ULONG*pcBind_out,
ULONG*pcMaxRowSize_out
);


HRESULT CleanupRowset
(
IRowset*pIRowset,
HACCESSOR hAccessor
);


void DumpRow
(
DBBINDING* rgBind,
ULONGcBind,
BYTE* pData,
CHttpServerContext* pCtxt
);