📄 dblib.cpp
字号:
{
MessageBox(Screen->ActiveForm->Handle, GetErrorMsg(), "系统提示信息", MB_OK | MB_ICONSTOP);
return false;
}
#else
return false;
#endif
}
bool CDblib::Run20Message(const char *CommandStr, ...)
{
#ifdef __BORLANDC__
char msg[1024];
va_list arg_ptr;
memset(msg, '@', sizeof(msg));
va_start(arg_ptr, CommandStr);
vsprintf(msg, CommandStr, arg_ptr);
va_end(arg_ptr);
__Run20(msg);
if(GetErrorCode() == 0)
{
MessageBox(Screen->ActiveForm->Handle, GetErrorMsg(), "系统提示信息", MB_OK | MB_ICONINFORMATION);
return true;
}
else
{
MessageBox(Screen->ActiveForm->Handle, GetErrorMsg(), "系统提示信息", MB_OK | MB_ICONSTOP);
return false;
}
#else
return false;
#endif
}
bool CDblib::Bind()
{
hasExtendColumn = false;
m_colCount = (USHORT)dbnumcols(m_dbProcess);
for(int i = 0; i < m_colCount; i++)
{
// dbcolinfo(m_dbProcess, CI_REGULAR, i + 1, i + 1, &col[i]);
strcpy(m_colInfo[i].Name, dbcolname(m_dbProcess, i + 1));
m_colInfo[i].Type = (SHORT)dbcoltype(m_dbProcess, i + 1);
m_colInfo[i].MaxLength = dbcollen(m_dbProcess, i + 1);
switch (m_colInfo[i].Type)
{
case SQLBIT:
case SQLINT1:
m_colInfo[i].MaxLength = 4;
dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLINT2:
m_colInfo[i].MaxLength = 6;
dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLINT4:
m_colInfo[i].MaxLength = 11;
dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLFLT4:
case SQLFLT8:
case SQLFLTN:
m_colInfo[i].MaxLength = 16;
dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLMONEY4:
case SQLMONEY:
case SQLMONEYN:
case SQLDECIMAL:
case SQLNUMERIC:
hasExtendColumn = true;
m_colInfo[i].MaxLength = 16;
dbbind(m_dbProcess, i + 1, FLT8BIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLDATETIME:
case SQLDATETIMN:
case SQLDATETIM4:
hasExtendColumn = true;
m_colInfo[i].MaxLength = 17;
dbbind(m_dbProcess, i + 1, DATETIMEBIND, (DBINT)0, (BYTE *)m_data[i]);
break;
case SQLBINARY:
case SQLVARBINARY:
hasExtendColumn = true;
// dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, DBMAXCHAR, (BYTE *)m_data[i]);
dbbind(m_dbProcess, i + 1, VARYBINBIND, DBMAXCHAR + 2, (BYTE *)m_data[i]);
break;
default:
dbbind(m_dbProcess, i + 1, NTBSTRINGBIND, DBMAXCHAR, (BYTE *)m_data[i]);
break;
}
}
return true;
}
bool CDblib::MoveNext()
{
double tempFloat;
DBCHAR tempStr[DBMAXCHAR];
DBINT ret;
struct dbdaterec tempDate;
ret = dbnextrow(m_dbProcess);
if(ret == FAIL)
return false;
else if (ret == NO_MORE_ROWS)
{
while (dbresults(m_dbProcess) != NO_MORE_RESULTS)
{
memset(m_data, 0, sizeof(m_data));
if(DBROWS(m_dbProcess)==SUCCEED)
{
Bind();
ret = dbnextrow(m_dbProcess);
if(ret == FAIL)
return false;
else if(ret != NO_MORE_ROWS)
goto __fmt;
}
}
if(dbchange(m_dbProcess))
strcpy(m_databaseName, dbname(m_dbProcess));
return false;
}
__fmt:
m_rowCount ++;
if(hasExtendColumn == false)
return true;
for(int i = 0; i < m_colCount; i++)
{
switch(m_colInfo[i].Type)
{
case SQLMONEY4:
case SQLMONEY:
case SQLMONEYN:
tempFloat = *(double *)m_data[i];
sprintf(m_data[i], "%.2f", tempFloat);
break;
case SQLVARBINARY:
case SQLBINARY:
// dbconvert(m_dbProcess, m_colInfo[i].Type, ((DBVARYBIN *)m_data[i])->array, ((DBVARYBIN *)m_data[i])->len, SQLCHAR, tempStr, sizeof(tempStr));
dbconvert(m_dbProcess, m_colInfo[i].Type, ((DBVARYBIN *)m_data[i])->array, min((int)(((DBVARYBIN *)m_data[i])->len), (DBMAXCHAR - 3) / 2), SQLCHAR, (BYTE *)tempStr, -1);
// tempStr[((sizeof(m_data[i]) - 3) / 2) * 2] = 0;
strcpy(m_data[i], "0x");
strcat(m_data[i], tempStr);
break;
case SQLDATETIM4:
case SQLDATETIME:
case SQLDATETIMN:
dbdatecrack(m_dbProcess, &tempDate, (DBDATETIME *) m_data[i]);
sprintf(m_data[i], "%04d%02d%02d %02d:%02d:%02d",
tempDate.year, tempDate.month, tempDate.day,
tempDate.hour, tempDate.minute, tempDate.second);
break;
}
}
return true;
}
bool CDblib::FirstColInfo()
{
return true;
}
bool CDblib::Use(const char * databaseName)
{
m_errorCode = 0;
strcpy(m_errorMsg, "执行存储过程成功");
memset(&m_dbErrorInfo, 0, sizeof(CDbErrorInfo));
dbuse(m_dbProcess, (char *)databaseName);
m_errorCode = dbretstatus(m_dbProcess);
if(m_errorCode == 0)
strcpy(m_databaseName, dbname(m_dbProcess));
return true;
}
bool CDblib::Cancel()
{
if(m_dbmsVersion & dvSybase)
{
while( dbresults(m_dbProcess ) != NO_MORE_RESULTS )
while(dbnextrow(m_dbProcess) != NO_MORE_ROWS);
}
else
dbcancel(m_dbProcess);
return false;
}
bool CDblib::Close()
{
if(m_dbProcess)
dbclose(m_dbProcess);
Init();
return true;
}
const SDBCOL * CDblib::GetColInfo(int index)
{
if(m_errorCode != 0 || m_colCount <= 0 || index >= m_colCount)
return (const SDBCOL *)NULL;
return &m_colInfo[index];
}
const SDBCOL * CDblib::GetColInfo(const char * colName)
{
int index;
for(index = 0; index < m_colCount; index ++)
{
if(stricmp(m_colInfo[index].Name, colName) == 0)
return GetColInfo(index);
}
return (const SDBCOL *)NULL;
}
char * CDblib::GetColData(int index)
{
if(m_errorCode != 0 || m_colCount <= 0 || index >= m_colCount)
return (char *)"";
return m_data[index];
}
char * CDblib::GetColData(const char * colName)
{
int index;
for(index = 0; index < m_colCount; index ++)
{
if(stricmp(m_colInfo[index].Name, colName) == 0)
return GetColData(index);
}
return (char *)"";
}
USHORT CDblib::GetServerList(CServerList * serverList)
{
long ret;
char * head = 0, * tail = 0;
char allSrvName[1024];
USHORT i;
unsigned short srvNumber = 0;
unsigned short validSrvNumber = 0;
ret = dbserverenum(NET_SEARCH | LOC_SEARCH, allSrvName, 500, &srvNumber);
if((ret == ENUM_SUCCESS || ret == MORE_DATA) && srvNumber > 0)
{
head = allSrvName;
for(i = 0; i < srvNumber; i ++)
{
tail = strchr(head, 0);
if(head[0] != 0)
{
memccpy(serverList[validSrvNumber].ServerName, head, tail - head + 1, 31);
serverList[validSrvNumber].ServerName[MAXNAME - 1] = 0;
validSrvNumber ++;
}
head = tail + 1;
}
return validSrvNumber;
}
return 0;
}
bool CDblib::LoadFunc()
{
#ifdef DLL_DBLIB
if(!CDblib::hDLL)
{
CDblib::hDLL = LoadLibrary("NTWDBLIB.DLL");
if (!CDblib::hDLL)
{
return false;
}
}
//dbsetlogintime
dbsetlogintime = (p_dbsetlogintime)GetProcAddress(CDblib::hDLL, "dbsetlogintime");
if (!dbsetlogintime)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbmsghandle
dbmsghandle = (p_dbmsghandle)GetProcAddress(CDblib::hDLL, "dbmsghandle");
if (!dbmsghandle)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbinit
dbinit = (p_dbinit)GetProcAddress(CDblib::hDLL, "dbinit");
if (!dbinit)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dblogin
dblogin = (p_dblogin)GetProcAddress(CDblib::hDLL, "dblogin");
if (!dblogin)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbopen
dbopen = (p_dbopen)GetProcAddress(CDblib::hDLL, "dbopen");
if (!dbopen)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbsetlname
dbsetlname = (p_dbsetlname)GetProcAddress(CDblib::hDLL, "dbsetlname");
if (!dbsetlname)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbuse
dbuse = (p_dbuse)GetProcAddress(CDblib::hDLL, "dbuse");
if (!dbuse)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcmd
dbcmd = (p_dbcmd)GetProcAddress(CDblib::hDLL, "dbcmd");
if (!dbcmd)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcmdrow
dbcmdrow = (p_dbcmdrow)GetProcAddress(CDblib::hDLL, "dbcmdrow");
if (!dbcmdrow)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbsqlexec
dbsqlexec = (p_dbsqlexec)GetProcAddress(CDblib::hDLL, "dbsqlexec");
if (!dbsqlexec)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbsqlok
dbsqlok = (p_dbsqlok)GetProcAddress(CDblib::hDLL, "dbsqlok");
if (!dbsqlok)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbsqlsend
dbsqlsend = (p_dbsqlsend)GetProcAddress(CDblib::hDLL, "dbsqlsend");
if (!dbsqlsend)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//winexit
dbwinexit = (p_dbwinexit)GetProcAddress(CDblib::hDLL, "dbwinexit");
if (!dbwinexit)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbresults
dbresults = (p_dbresults)GetProcAddress(CDblib::hDLL, "dbresults");
if (!dbresults)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbnextrow
dbnextrow = (p_dbnextrow)GetProcAddress(CDblib::hDLL, "dbnextrow");
if (!dbnextrow)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbbind
dbbind = (p_dbbind)GetProcAddress(CDblib::hDLL, "dbbind");
if (!dbbind)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcancel
dbcancel = (p_dbcancel)GetProcAddress(CDblib::hDLL, "dbcancel");
if (!dbcancel)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbclose
dbclose = (p_dbclose)GetProcAddress(CDblib::hDLL, "dbclose");
if (!dbclose)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbclrbuf
dbclrbuf = (p_dbclrbuf)GetProcAddress(CDblib::hDLL, "dbclrbuf");
if (!dbclrbuf)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcollen
dbcollen = (p_dbcollen)GetProcAddress(CDblib::hDLL, "dbcollen");
if (!dbcollen)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcolname
dbcolname = (p_dbcolname)GetProcAddress(CDblib::hDLL, "dbcolname");
if (!dbcolname)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcoltype
dbcoltype = (p_dbcoltype)GetProcAddress(CDblib::hDLL, "dbcoltype");
if (!dbcoltype)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcolntype
dbcolntype = (p_dbcolntype)GetProcAddress(CDblib::hDLL, "dbcolntype");
if (!dbcolntype)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcolutype
dbcolutype = (p_dbcolutype)GetProcAddress(CDblib::hDLL, "dbcolutype");
if (!dbcolutype)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbcount
dbcount = (p_dbcount)GetProcAddress(CDblib::hDLL, "dbcount");
if (!dbcount)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbdata
dbdata = (p_dbdata)GetProcAddress(CDblib::hDLL, "dbdata");
if (!dbdata)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbdataready
dbdataready = (p_dbdataready)GetProcAddress(CDblib::hDLL, "dbdataready");
if (!dbdataready)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbdatlen
dbdatlen = (p_dbdatlen)GetProcAddress(CDblib::hDLL, "dbdatlen");
if (!dbdatlen)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbdatecrack
dbdatecrack = (p_dbdatecrack)GetProcAddress(CDblib::hDLL, "dbdatecrack");
if (!dbdatecrack)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbdead
dbdead = (p_dbdead)GetProcAddress(CDblib::hDLL, "dbdead");
if (!dbdead)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dberrhandle
dberrhandle = (p_dberrhandle)GetProcAddress(CDblib::hDLL, "dberrhandle");
if (!dberrhandle)
{
FreeLibrary(CDblib::hDLL);
return false;
}
/*//dbprocerrhandle
dbprocerrhandle = (p_db)GetProcAddress(CDblib::hDLL, "dbprocerrhandle");
if (!dbprocerrhandle)
{
FreeLibrary(CDblib::hDLL);
return false;
}
//dbprocmsghandle
dbprocmsghandle = (p_db)GetProcAddress(CDblib::hDLL, "dbprocmsghandle");
if (!dbprocmsghandle)
{
FreeLibrary(CDblib::hDLL);
return false;
} */
//dbfcmd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -