📄 sqlprog.h
字号:
UCHAR rootDir[]="C:\\DBSERVER\\";
UCHAR HTMLHead[]="00000000";
HENV henv;
typedef struct
{
UDWORD pcbColDef;
SWORD pfSqlType;
SWORD SqlType;
SWORD pibScale;
UDWORD len;}ColumnInfo;
ColumnInfo ColInfo[256];
typedef struct
{
short ID;
UCHAR connString[200];}connIDInfo;
connIDInfo ConIDStru[MAXCONNECTID];
typedef struct
{
UCHAR userName[20];
UCHAR passWord[20];
UCHAR winName[20];
UCHAR pathName[80];}userstru;
userstru userInfoStru[MAXUSER];
long userCount=0;
char far author[]="\\AUTHOR.SAV";
short connectCount=0;
typedef struct
{
//UCHAR dataDir[50];
UCHAR sqlselectstring[300];
short usermark;
short ID;
UCHAR connstring[200];
HDBC hdbc;
HSTMT phstmt;
//UDWORD ulpos;
UWORD iCol;
UWORD i;
UCHAR FAR * descptr;
UCHAR FAR * sourceptr;
unsigned char *returnstring;
unsigned char *retstr;
RETCODE retcode;
ColumnInfo ColInfo[256];
UCHAR DSN[80];
UCHAR UID[30];
UCHAR PASSWORD[30];
unsigned long ii;
unsigned long jj;
unsigned char dwLib[30];
unsigned char dwName[30];
EXTENSION_CONTROL_BLOCK *pECB;
BOOL errorUpdate;
} ConnStruDef;
ConnStruDef connectStru[MAXCONNECT];
//char far author[]="\\AUTHOR.SAV";
//char far id_section[]="@_ID_section";
//short connectCount=0;
void WriteHtml(EXTENSION_CONTROL_BLOCK *pECB,LPSTR lpsz);
void makeConnectString(UCHAR FAR *,short ID);
void sendsqlresult(int connectID);
UCHAR FAR * changerequest(UCHAR FAR * requeststring);
UCHAR sqlerror[300],stateerror[300];
SDWORD dwerror;
SWORD dwerror1;
BOOL oneUpdate(int ConnctID,UCHAR FAR * requeststring);
//--------------------------------------------
void makeDisconnect(connectID)
int connectID;
{
if(connectStru[connectID].phstmt==SQL_NULL_HSTMT)
SQLFreeStmt(connectStru[connectID].phstmt,SQL_DROP);
if(connectStru[connectID].hdbc==SQL_NULL_HDBC)
SQLDisconnect(connectStru[connectID].hdbc);
//if(henv==SQL_NULL_HENV)
// SQLFreeEnv(henv);
connectStru[connectID].ID=0;}
//----------------------------------------------------------
BOOL makeConnect(connectID,ID)
int connectID;
short ID;
{
UCHAR FAR tmp[200];
SWORD MAXStringLen;
// UCHAR szSqlState[6],szErrorMsg[300];
// SDWORD dwNativeError;
// SWORD wErrorMsg;
RETCODE retcode;
makeConnectString(connectStru[connectID].connstring,ID);
if(connectStru[connectID].connstring==NULL) return(FALSE);
connectStru[connectID].ID=ID;
retcode=SQLAllocConnect(henv,&(connectStru[connectID].hdbc));
if(retcode!=SQL_SUCCESS) {
makeDisconnect(connectID);return(FALSE);}
// SQLSetConnectOption(connectStru[connectID].hdbc,SQL_LOGIN_TIMEOUT,10);
SQLSetConnectOption(connectStru[connectID].hdbc,SQL_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF);
//SQLSetConnectOption(connectStru[connectID].hdbc,SQL_ACCESS_MODE,SQL_MODE_READ_WRITE);
retcode=SQLDriverConnect(connectStru[connectID].hdbc,
NULL,
connectStru[connectID].connstring,SQL_NTS,
tmp,200,&MAXStringLen,SQL_DRIVER_NOPROMPT);
//retcode=SQLConnect(connectStru[connectID].hdbc,
// connectStru[connectID].DSN,SQL_NTS,
// connectStru[connectID].UID,SQL_NTS,
// connectStru[connectID].PASSWORD,SQL_NTS);
//itoa(retcode,tmp,10);
//strcat(tmp,connectStru[connectID].DSN);
//strcat(tmp,connectStru[connectID].UID);
//strcat(tmp,connectStru[connectID].PASSWORD);
//WriteHtml(connectStru[connectID].pECB,tmp);
//WriteHtml(connectStru[connectID].pECB,connectStru[connectID].connstring);
// SQLError(henv,
// connectStru[connectID].hdbc,SQL_NULL_HSTMT,
// szSqlState,&dwNativeError,szErrorMsg,300,&wErrorMsg);
// WriteHtml(connectStru[connectID].pECB,szErrorMsg);
if((retcode==SQL_SUCCESS) || (retcode==SQL_SUCCESS_WITH_INFO)) {
retcode=SQLAllocStmt(connectStru[connectID].hdbc,
&(connectStru[connectID].phstmt));
if(retcode!=SQL_SUCCESS) {makeDisconnect(connectID);return(FALSE);}
return(TRUE);}
else {
makeDisconnect(connectID);return(FALSE);}}
//----------------------------------------------------------
UCHAR szcolName[80];
SWORD cbColNameMax=80,pcbColName;
SWORD pibScale,pfNullable;
BOOL sqlSelectFun(connectID,sqlselectstring)
int connectID;
UCHAR FAR * sqlselectstring;
{
RETCODE retcode;
sqlselectstring=changerequest(sqlselectstring);
//connectStru[connectID].ulpos=0;
retcode=SQLExecDirect(connectStru[connectID].phstmt,
sqlselectstring,SQL_NTS);
if(retcode!=SQL_SUCCESS) {
WriteHtml(connectStru[connectID].pECB,"ERROR004");
return(FALSE);}
connectStru[connectID].iCol=1;
while(TRUE) {
retcode=SQLDescribeCol(
connectStru[connectID].phstmt,
connectStru[connectID].iCol,
szcolName,
cbColNameMax,
&pcbColName,
&(connectStru[connectID].ColInfo[connectStru[connectID].iCol].pfSqlType),
&(connectStru[connectID].ColInfo[connectStru[connectID].iCol].pcbColDef),
&(connectStru[connectID].ColInfo[connectStru[connectID].iCol].pibScale),
&pfNullable);
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].SqlType=SQL_C_CHAR;
switch(connectStru[connectID].ColInfo[connectStru[connectID].iCol].pfSqlType) {
case SQL_BIGINT:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_BINARY:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_BIT:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_CHAR:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_DATE:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_DECIMAL:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=1;break;
case SQL_DOUBLE:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=1;break;
case SQL_FLOAT:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=1;break;
case SQL_INTEGER:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_LONGVARCHAR:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_LONGVARBINARY:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=0;break;
case SQL_NUMERIC:
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pcbColDef=80;
connectStru[connectID].ColInfo[connectStru
[connectID].iCol].pfSqlType=1;break;
case SQL_REAL:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -