📄 dlodbc.cpp
字号:
re = SQLGetInfo(connection,infotype,(void*)(&value),sizeof(SQLUINTEGER),&str_len);
char* ft;
ft = (char*)buf;
ltoa(value,ft,10);
} else {
re = SQLGetInfo(connection,infotype,(void*)buf,len,&str_len);
}
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, connection, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int getmetadata(SQLHSTMT statement,int option,
SQLCHAR* param1, SQLSMALLINT par1_len,
SQLCHAR* param2, SQLSMALLINT par2_len,
SQLCHAR* param3, SQLSMALLINT par3_len,
SQLCHAR* param4, SQLSMALLINT par4_len) {
try {
SQLRETURN re;
switch(option){
case 1:
re = SQLProcedures(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len
);
break;
case 2:
re = SQLTablePrivileges(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len
);
break;
case 3:
re = SQLSpecialColumns(statement,
SQL_ROWVER,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
SQL_SCOPE_SESSION,SQL_NULLABLE
);
break;
case 4:
re = SQLPrimaryKeys(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len
);
break;
case 5:
re = SQLForeignKeys(statement,
NULL,0,NULL,0,NULL,0,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len
);
break;
case 6:
re = SQLForeignKeys(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
NULL,0,NULL,0,NULL,0
);
break;
case 7:
re = SQLProcedureColumns(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
(SQLCHAR*)param4,(SQLSMALLINT)par4_len
);
break;
case 8:
re = SQLColumns(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
(SQLCHAR*)param4,(SQLSMALLINT)par4_len
);
break;
case 9:
re = SQLColumnPrivileges(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
(SQLCHAR*)param4,(SQLSMALLINT)par4_len
);
break;
case 10:
re = SQLTables(statement,
(SQLCHAR*)param1,(SQLSMALLINT)par1_len,
(SQLCHAR*)param2,(SQLSMALLINT)par2_len,
(SQLCHAR*)param3,(SQLSMALLINT)par3_len,
(SQLCHAR*)param4,(SQLSMALLINT)par4_len
);
break;
case 11:
re = SQLGetTypeInfo(statement,SQL_ALL_TYPES);
}
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int getIndexInfo(SQLHSTMT statement,
SQLCHAR* param1, SQLSMALLINT par1_len,
SQLCHAR* param2, SQLSMALLINT par2_len,
SQLCHAR* param3, SQLSMALLINT par3_len,
int param4, SQLUSMALLINT param5) {
try {
SQLRETURN re;
SQLUSMALLINT uni;
if (param4) uni = SQL_INDEX_UNIQUE;
else uni = SQL_INDEX_ALL;
re = SQLStatistics(statement,
param1,par1_len,
param2,par2_len,
param3,par3_len,
uni,param5);
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int getCrossReference(SQLHSTMT statement,
SQLCHAR* param1, SQLSMALLINT par1_len,
SQLCHAR* param2, SQLSMALLINT par2_len,
SQLCHAR* param3, SQLSMALLINT par3_len,
SQLCHAR* param4, SQLSMALLINT par4_len,
SQLCHAR* param5, SQLSMALLINT par5_len,
SQLCHAR* param6, SQLSMALLINT par6_len) {
try {
SQLRETURN re;
re = SQLForeignKeys( statement,
param1,par1_len,
param2,par2_len,
param3,par3_len,
param4,par4_len,
param5,par5_len,
param6,par6_len
);
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int FindColumn(SQLHSTMT statement, char* srcp) {
try {
SQLRETURN re;
SQLSMALLINT no;
SQLSMALLINT cols ;
re = SQLNumResultCols (statement, &cols);
SQLCHAR name_s[512];
memset(name_s, '\0', 512);
SQLSMALLINT nlen,dtype,d_digits,nullable;
SQLUINTEGER colsize;
for (no=1; no<=cols; no++) {
re = SQLDescribeCol(statement, no, name_s, 512, &nlen, &dtype, &colsize, &d_digits, &nullable);
if (strcmp(srcp, (char*)name_s) == 0) return no;
}
} catch (...) {
}
return -1;
}
SQLUINTEGER GetRow(SQLHSTMT statement) {
try {
SQLRETURN re;
SQLINTEGER attr = SQL_ATTR_ROW_NUMBER, strlen;
SQLUINTEGER no;
char pk[10];
memset(pk, '\0', 10);
re = SQLGetStmtAttr (statement, attr, (void*)(&no), 0, &strlen);
if (re==SQL_SUCCESS||re==SQL_SUCCESS_WITH_INFO) {
return no;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return 0;
}
int MoveCursor(SQLHSTMT statement, SQLSMALLINT opera_type, SQLINTEGER value) {
try {
SQLRETURN re;
re = SQLFetchScroll(statement, opera_type, value);
if (re==SQL_SUCCESS||re==SQL_SUCCESS_WITH_INFO) {
return 1;
}
} catch (...) {
}
return -1;
}
int GetBoolAttribute(SQLHSTMT statement, SQLUSMALLINT type, SQLUSMALLINT index) {
try {
SQLRETURN re;
SQLINTEGER result;
re = SQLColAttribute(statement, index, type, NULL, 0, NULL, (void*)(&result));
if (re==SQL_SUCCESS || re==SQL_SUCCESS_WITH_INFO) {
return result;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return 0;
}
int GetStringAttribute(SQLHSTMT statement, SQLUSMALLINT type, SQLUSMALLINT index, char buf[], SQLSMALLINT &str_len) {
try {
SQLRETURN re;
SQLSMALLINT buf_len=512;
SQLINTEGER iresult;
re = SQLColAttribute(statement, index, type, (void*)buf, buf_len, &str_len, (void*)(&iresult));
if (re==SQL_SUCCESS || re==SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int CloseCursor(SQLHSTMT statement) {
try {
SQLRETURN re;
re = SQLCloseCursor(statement);
if (re==SQL_SUCCESS || re==SQL_SUCCESS_WITH_INFO) {
return 1;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int setAutoCommit(SQLHDBC connect, char r) {
SQLINTEGER attr = SQL_ATTR_AUTOCOMMIT;
SQLRETURN re;
try {
if (r == 0) re = SQLSetConnectAttr(connect, attr, (void*)SQL_AUTOCOMMIT_OFF, 0);
else re = SQLSetConnectAttr(connect, attr, (void*)SQL_AUTOCOMMIT_ON, 0);
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return 0;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, connect, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return -1;
}
int isAutoCommit (SQLHDBC connect) {
SQLINTEGER attr = SQL_ATTR_AUTOCOMMIT;
SQLINTEGER strlen;
SQLUINTEGER value = 0;
SQLRETURN re;
try {
re = SQLGetConnectAttr(connect, attr, (void*)(&value), 0, &strlen);
if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
return value;
} else {
SQLCHAR sql[255];
SQLINTEGER err;
SQLCHAR mes[255];
memset (mes, '\0', 10);
memset (sql, '\0', 10);
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, connect, 1, sql, &err, mes, 255, &len);
}
} catch (...) {
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -