Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
216
CryptoSource/SQLExecute/NaveServer/NFOLEDB.h
Normal file
216
CryptoSource/SQLExecute/NaveServer/NFOLEDB.h
Normal file
@@ -0,0 +1,216 @@
|
||||
/**
|
||||
* @file NFOLEDB.h
|
||||
* @brief OLD DB <20><>ü
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-05-09
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <oledb.h>
|
||||
#include <oledberr.h>
|
||||
|
||||
//#define _CHECK_OLEDB_PERFORMANCE // DB <20><><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD> üũ
|
||||
#ifdef _CHECK_OLEDB_PERFORMANCE
|
||||
#define DB_PERFORMANCE_CHECK(x) x
|
||||
#else
|
||||
#define DB_PERFORMANCE_CHECK(x) (void*)0;
|
||||
#endif
|
||||
|
||||
/*
|
||||
SQL Server Data Type ADO Data Type SQLOLEDB data type
|
||||
bigint adBigInt DBTYPE_I8
|
||||
binary adBinary DBTYPE_BYTES
|
||||
bit adBoolean DBTYPE_BOOL
|
||||
char adChar DBTYPE_STR
|
||||
datetime adDBTimeStamp DBTYPE_DBTIMESTAMP
|
||||
decimal adNumeric DBTYPE_NUMERIC
|
||||
float adDouble DBTYPE_R8
|
||||
image adVarbinary DBTYPE_BYTES
|
||||
int adInteger DBTYPE_I4
|
||||
money adCurrency DBTYPE_CY
|
||||
nchar adWChar DBTYPE_WSTR
|
||||
ntext adWChar DBTYPE_WSTR
|
||||
numeric adNumeric DBTYPE_NUMERIC
|
||||
nvarchar adWChar DBTYPE_WSTR
|
||||
real adSingle DBTYPE_R4
|
||||
smalldatetime adTimeStamp DBTYPE_DBTIMESTAMP
|
||||
smallint adSmallInt DBTYPE_I2
|
||||
smallmoney adCurrency DBTYPE_CY
|
||||
sql_variant adVariant DBTYPE_VARIANT, DBTYPE_SQLVARIANT*
|
||||
sysname adWChar DBTYPE_WSTR
|
||||
text adChar DBTYPE_STR
|
||||
timestamp adBinary DBTYPE_BYTES
|
||||
tinyint adVarbinary DBTYPE_UI1
|
||||
uniqueidentifier adGUID DBTYPE_GUID
|
||||
varbinary adVarBinary DBTYPE_BYTES
|
||||
varchar adChar DBTYPE_STR
|
||||
|
||||
<EFBFBD>з<EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> <09><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Bit O <20>Ǵ<EFBFBD> 1 bit
|
||||
Int -2,147,483,648 ~ 2,147,483,647 4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Smallint -32,768 ~ 32,767 2 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Tinyint 0 ~ 255 1 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Bigint -2^63 ~ 2^63-1 8 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
<EFBFBD>ε<EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
Float[n] -1.79E+308 ~ 1.79E+308
|
||||
n = 1~24 4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Float[n] -1.79E+308 ~ 1.79E+308
|
||||
n = 25~53 8 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
Real -3.40E + 38 ~ 3.40E + 38 4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char[n] n = 1~8000 n <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Varchar[n] n = 1~8000 <09>Է<EFBFBD><D4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
Text <09>ִ<EFBFBD> 2,147,483,647<34><37><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Nchar n = 1~4000 n*2 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
nvarchar n = 1~4000 <09>Է<EFBFBD><D4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>*2 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Ntext <09>ִ<EFBFBD> 1,073,741,823<32><33><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
binary n = 1~8000 n+4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
varbinary n = 1~8000 <09>Է<EFBFBD><D4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>+4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
Image <09>ִ<EFBFBD> 2,147,483,647<34><37><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD>¥<EFBFBD>ͽð<EFBFBD>
|
||||
datetime 1753/1/1~9999/12/31 8 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
smalldatetime 1900/1/1~2079/6/6 4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
ȭ<EFBFBD><EFBFBD>
|
||||
money -922,337,203,685,477.5808~
|
||||
+922,337,203,685,477.5807 8 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
smallmoney -214,748.3648~214,748.3647 4 <20><><EFBFBD><EFBFBD>Ʈ
|
||||
*/
|
||||
|
||||
namespace NaveServer {
|
||||
|
||||
/**
|
||||
* @class NFOleDB
|
||||
* @brief NFOleDB<44><42> <20>̿<EFBFBD><CCBF><EFBFBD> Database<73><65> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
*
|
||||
* @todo <20><><EFBFBD><EFBFBD> nchar<61><72> nvarchar <20><> 2byte <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>.
|
||||
* <20>̺κ<CCBA><CEBA><EFBFBD> <20><EFBFBD>Ʈ <20>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>. 2byte <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ھտ<DABE> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4> <20>ִµ<D6B4> <20>̰Ŷ<CCB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>谡 <20>ִ<EFBFBD><D6B4><EFBFBD> Ȯ<><C8AE><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-05-09
|
||||
*/
|
||||
class NFOleDB
|
||||
{
|
||||
public:
|
||||
const static unsigned long MaxRowNum = 2000; /// <20>ִ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
const static unsigned long MaxErrorLen = 512; /// <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const static unsigned long MaxQueryTextLen = 8192; /// <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
public:
|
||||
/// DBConnect Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>.
|
||||
enum ConnType
|
||||
{
|
||||
ConnType_ODBC = 0,
|
||||
ConnType_MSSQL = 1,
|
||||
ConnType_ORACLE
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD>
|
||||
enum Rowset
|
||||
{
|
||||
Rowset_Get = 0,
|
||||
Rowset_Update = 1
|
||||
};
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>ͷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
typedef struct PARAM_INFO
|
||||
{
|
||||
const static unsigned short MaxColNum = 30; /// <20>ִ<EFBFBD> <20>÷<EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long ColNum; /// <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
DBPARAMIO eParamIO[MaxColNum]; /// <20>÷<EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8>
|
||||
unsigned long ColSize[MaxColNum]; /// <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned short ColType[MaxColNum]; /// <20>÷<EFBFBD> Ÿ<><C5B8>
|
||||
}*LPPARAM_INFO;
|
||||
|
||||
/// <20><><EFBFBD>̳ʸ<CCB3><CAB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
typedef struct SET_BINARY
|
||||
{
|
||||
unsigned long Size;
|
||||
}*LPSET_BINARY;
|
||||
|
||||
/// <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.)
|
||||
typedef struct COL_INFO
|
||||
{
|
||||
const static unsigned short MaxColNameLen = 100; /// <20>ִ<EFBFBD> <20>÷<EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
char ColName[MaxColNameLen]; /// <20>÷<EFBFBD> <20≯<EFBFBD>
|
||||
unsigned long ColSize; /// <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}*LPCOL_INFO;
|
||||
|
||||
public:
|
||||
NFOleDB(void);
|
||||
virtual ~NFOleDB(void);
|
||||
|
||||
inline LPCWSTR GetErrorString(void) const { return m_ErrorString; }
|
||||
inline LPCWSTR GetLastMessage(void) const { return m_LastMessage; }
|
||||
inline HRESULT GetLastError(void) const { return m_dwLastError; }
|
||||
|
||||
bool ConnectDataSourcePrompt(HWND hWnd_In);
|
||||
bool ConnectSQLServer(LPCWSTR ServerName_In, LPCWSTR DataBaseName_In, LPCWSTR UserID_In, LPCWSTR UserPass_In, ConnType ConnType_In);
|
||||
bool DisconnectDataSource(void);
|
||||
|
||||
bool ExecuteQuery(LPCWSTR Query_In, Rowset Rowset_In = Rowset_Get);
|
||||
bool ExecuteQueryWithParams(LPCWSTR Query_In, char *Data_In, const PARAM_INFO& ColInfo_In);
|
||||
bool ExecuteQueryGetData(LPCWSTR Query_In, void *Buffer_Out);
|
||||
|
||||
bool GetData(void *Buffer_Out);
|
||||
bool GetData(void **Buffer_Out, int RowSize_In, int Row_In, int *pGetRow_Out);
|
||||
|
||||
bool SetBinaryData(int ColNum_In, LPSET_BINARY lpSetBinary);
|
||||
|
||||
COL_INFO& GetColInfo(void) { return m_ColInfo; }
|
||||
|
||||
public:
|
||||
IDBInitialize* m_pIDBInit;
|
||||
IDBCreateSession* m_pIDBCreateSession;
|
||||
IDBCreateCommand* m_pIDBCreateCommand;
|
||||
IRowset* m_pIRowset;
|
||||
IRowsetChange* m_pIRowsetChange;
|
||||
|
||||
HRESULT m_dwLastError;
|
||||
|
||||
WCHAR m_ErrorString[MaxErrorLen];
|
||||
WCHAR m_LastMessage[MaxErrorLen];
|
||||
|
||||
private:
|
||||
/// <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
typedef struct RESULT_COLS
|
||||
{
|
||||
unsigned long ColNum;
|
||||
DBCOLUMNINFO* lpDBColumnInfo;
|
||||
WCHAR* lpStringsBuffer;
|
||||
}*LPRESULT_COLS;
|
||||
|
||||
WCHAR m_QueryText[MaxQueryTextLen]; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD>
|
||||
COL_INFO m_ColInfo; /// <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
private:
|
||||
|
||||
bool HandleError(int ErrorLine_In, HRESULT hResult_In, WCHAR *Buffer_In);
|
||||
|
||||
bool CreateSession(void);
|
||||
bool DBCreateCommand(void);
|
||||
|
||||
bool AllocResultCols(IUnknown* lpIUnknown_In, RESULT_COLS &Rsult_Cols);
|
||||
bool ReleaseResultCols(IUnknown* lpIUnknown_In, RESULT_COLS &Rsult_Cols);
|
||||
|
||||
bool SetConnectionProperties(LPCWSTR ServerName_In, LPCWSTR DataBaseName_In, LPCWSTR UserID_In, LPCWSTR UserPass_In);
|
||||
DBBINDING* AllocBindGetData(int ColsNum_In, DBCOLUMNINFO* pDBColumnInfo_In);
|
||||
DBBINDING* AllocBindParamInputData(const PARAM_INFO &ColInfo_In);
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user