You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

897 lines
16 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// mySqlite.cpp: implementation of the mySqlite class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "mySqlite.h"
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "WriteLog.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
mySqlite::mySqlite()
{
m_dbptr = NULL;
m_RecordCount = 0;
m_SqliteFileName = "";
m_SqlVersion = "";
memset(m_PriKey, 0, sizeof(m_PriKey));
}
mySqlite::~mySqlite()
{
}
int mySqlite::toWString(wstring &deststr,const string& sourcestr, unsigned int code)
{
std::wstring wstr;
int len;
int iret;
len = MultiByteToWideChar(code, 0, sourcestr.c_str(), -1, NULL, 0);
if (0 == len)
{
return -1;
}
wstr.resize(static_cast<size_t>(len + 1));
iret = MultiByteToWideChar(code, 0, sourcestr.c_str(), -1, const_cast<wchar_t*>(wstr.c_str()), len);
if (0 == len)
{
return -2;
}
deststr = wstr;
return 0;
}
int mySqlite::toYString(string& deststr,const std::wstring& sourcestr, unsigned int code )
{
string ystr;
int len;
int iret;
len = WideCharToMultiByte(code, 0, sourcestr.c_str(), -1, NULL, 0, NULL, NULL);
if (0 == len)
{
return -1;
}
ystr.resize(static_cast<size_t>(len - 1));
len = WideCharToMultiByte(code, 0, sourcestr.c_str(), -1, const_cast<char*>(ystr.c_str()), len, NULL, NULL);
if (0 == len)
{
return -2;
}
deststr = ystr;
}
int mySqlite::GbkToUtf8(string & utf8str, const string& gbkstr)
{
int iret;
wstring wstr;
string ystr;
iret = gbkstr.length();
if(iret <= 0)
{
return 0;
}
iret = toWString(wstr, gbkstr, CP_ACP);
if (iret < 0)
{
return -1;
}
iret = toYString(ystr, wstr);
if (iret < 0)
{
return -2;
}
utf8str = ystr;
return 0;
}
int mySqlite::Utf8ToGbk(string & gbkstr, const string& utf8str)
{
int iret;
wstring wstr;
string ystr;
iret = utf8str.length();
if (iret <= 0)
{
return 0;
}
iret = toWString(wstr, utf8str);
if (iret < 0)
{
return -1;
}
iret = toYString(ystr, wstr, CP_ACP);
if (iret < 0)
{
return -2;
}
gbkstr = ystr;
return 0;
}
bool mySqlite::Open(const char * pName, const char * pKey)
{
int iRet;
iRet = GetSqlTmpName(pName);
if (iRet < 0)
{
// WriteLog("<22>ļ<EFBFBD> %s <20><>ȡʱ<C8A1><CAB1>ʧ<EFBFBD><CAA7>, <20><><EFBFBD><EFBFBD>ֵ %d",pName, iRet);
return false;
}
iRet = SetPriKey(pKey);
if (iRet < 0)
{
return false;
}
Close();
iRet = GetWriteTime(pName);
if (iRet < 0)
{
WriteLog("<EFBFBD>ļ<EFBFBD> %s <20><>ȡʱ<C8A1><CAB1>ʧ<EFBFBD><CAA7>, <20><><EFBFBD><EFBFBD>ֵ %d",pName, iRet);
return false;
}
iRet = sqlite3_open(pName, &m_dbptr);
if (iRet != SQLITE_OK)
{
sqlite3_close(m_dbptr);
m_dbptr = NULL;
WriteLog("<EFBFBD>ļ<EFBFBD> %s sqlite3_openʧ<6E><CAA7>",pName);
return false;
}
WriteLog("<EFBFBD>ļ<EFBFBD> %s <20>򿪳ɹ<F2BFAAB3>",pName);
m_SqliteFileName = pName;
iRet = GetTableName();
if(iRet < 0)
{
Close();
WriteLog("<EFBFBD>ļ<EFBFBD> %s <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ֵ %d",pName,iRet);
return false;
}
iRet = GetCountAndVerSion();
if(iRet < 0)
{
Close();
WriteLog("<EFBFBD>ļ<EFBFBD> %s <20><>ȡ<EFBFBD><C8A1>¼<EFBFBD>Ͱ汾ʧ<E6B1BE><CAA7>,<2C><><EFBFBD><EFBFBD>ֵ %d",pName,iRet);
return false;
}
return true;
}
void mySqlite::Close()
{
if (m_dbptr)
{
sqlite3_close(m_dbptr);
m_dbptr = NULL;
}
}
int mySqlite::SetPriKey(const char * pKey)
{
int iRet;
iRet = strlen(pKey);
if (iRet >= MAX_PRIKEYNAME_LEN)
{
WriteLog("key %s <20><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>",pKey);
return -1;
}
strcpy(m_PriKey, pKey);
return 0;
}
bool mySqlite::IsOpened()
{
if (m_dbptr)
{
return true;
}
return false;
}
string mySqlite::GetDBFFileName()
{
return m_SqliteFileName;
}
int mySqlite::GetSqlTmpName(const char * pName)
{
char buf[320];
// int iret;
int i;
int ilen;
char * ptr;
ilen = strlen(pName);
if(ilen >300)
{
WriteLog("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> %s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B6A8><EFBFBD><EFBFBD>",pName);
return -1;
}
memset(buf,0,sizeof(buf));
strcpy(buf,pName);
for(i =ilen -1; i>=0; i--)
{
if(('\\' == buf[i]) || ('/' == buf[i]))
{
ptr = buf+i+1;
break;
}
}
ilen = strlen(ptr);
for(i =ilen -1; i>0; i--)
{
if('.' == ptr[i])
{
ptr[i] ='\0';
break;
}
}
ilen = strlen(ptr);
for(i =ilen -1; i>0; i--)
{
if('_' == ptr[i])
{
ptr[i] ='\0';
break;
}
}
m_SqliteTmpName = ptr;
return 0;
}
int mySqlite::GetTableName()
{
if (!m_dbptr)
{
return -1;
}
int iRet;
// int iFind;
int iLen;
char * errmsg = NULL;
char **dbResult; //<2F><> char ** <20><><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>*<2A><>
int nRow, nColumn;
char * ptr;
// string stemp;
//char buf[16];
iRet = sqlite3_get_table(m_dbptr, SQL_GETTABLENAME_STR, &dbResult, &nRow, &nColumn, &errmsg);
if (SQLITE_OK == iRet)
{ //<2F><>ѯ<EFBFBD>ɹ<EFBFBD>
if(0 == nRow)
{
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼Ϊ0",m_SqliteFileName,SQL_GETTABLENAME_STR);
sqlite3_free_table(dbResult);
return -2;
}
if(nColumn != 1)
{
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1",m_SqliteFileName,SQL_GETTABLENAME_STR);
sqlite3_free_table(dbResult);
return -3;
}
int i;
for(i=0; i<nRow; i++)
{
ptr = dbResult[nColumn * (i + 1)];
if(0 == (strcmp(ptr,SQL_BLACKTAB_STR)))
{
m_TableName = SQL_BLACKTAB_STR;
sqlite3_free_table(dbResult);
return 0;
break;
}
}
for(i=0; i<nRow; i++)
{
ptr = dbResult[nColumn * (i + 1)];
iLen = strlen(ptr);
if(m_SqliteTmpName.length() == iLen)
{
if(0 == (strnicmp(ptr,m_SqliteTmpName.c_str(), iLen)))
{
m_TableName = ptr;
sqlite3_free_table(dbResult);
return 0;
break;
}
}
}
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s δ<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>",m_SqliteFileName);
sqlite3_free_table(dbResult);
return -5;
}
else
{
WriteLog("<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯʧ<D1AF><CAA7>",m_SqliteFileName.c_str(),SQL_GETTABLENAME_STR);
sqlite3_free_table(dbResult);
return -6;
}
//Close();
sqlite3_free_table(dbResult);
return 0;
}
int mySqlite::GetCountAndVerSion()
{
if (!m_dbptr)
{
return -1;
}
int iRet;
int iLen;
char * errmsg = NULL;
char **dbResult; //<2F><> char ** <20><><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>*<2A><>
int nRow, nColumn;
//char buf[16];s'q
iRet = sqlite3_get_table(m_dbptr, SQL_GETCOUNTANDVER_STR, &dbResult, &nRow, &nColumn, &errmsg);
if (SQLITE_OK == iRet)
{ //<2F><>ѯ<EFBFBD>ɹ<EFBFBD>
if(0 == nRow)
{
//WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼Ϊ0",m_SqliteFileName,SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -2;
}
if(nColumn != 2)
{
//WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2",m_SqliteFileName,SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -3;
}
iLen = strlen(dbResult[0]);
if(iLen >128)
{
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ <20>汾̫<E6B1BE><CCAB>",m_SqliteFileName,SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -4;
}
m_SqlVersion = dbResult[2];
iLen = strlen(dbResult[3]);
if (iLen > 10)
{
//Close();
//WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF>¼<EFBFBD><C2BC> ̫<><CCAB>",m_SqliteFileName,SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -5;
}
iRet = isnumer(dbResult[3]);
if(iRet <0)
{
//WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ<EFBFBD><D1AF>¼<EFBFBD><C2BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",m_SqliteFileName,SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -6;
}
m_RecordCount = atoi(dbResult[3]);
}
else
{
WriteLog("<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯʧ<D1AF><CAA7>",m_SqliteFileName.c_str(),SQL_GETCOUNTANDVER_STR);
sqlite3_free_table(dbResult);
return -7;
}
WriteLog("<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> %s m_SqlVersion %s m_RecordCount %d",m_SqliteFileName.c_str(),m_SqlVersion.c_str(),m_RecordCount);
//Close();
sqlite3_free_table(dbResult);
return 0;
}
int mySqlite::GetRecordCount()
{
return m_RecordCount;
}
string mySqlite::GetSqlVersion()
{
return m_SqlVersion;
}
string mySqlite::SqlFind(const char *KeyValue, bool &bFound, const bool bFindAll)
{
if (!m_dbptr)
{
bFound = false;
return "{\"RETCODE\":-5,\"ERRORINFO\":\"SQL<EFBFBD>ļ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"}";
}
int iRet;
// int iLen;
char * errmsg = NULL;
char **dbResult; //<2F><> char ** <20><><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>*<2A><>
int nRow, nColumn;
string stemp,sRecord,skey;
int iFlag = 0;
//char buf[16];
bFound = false;
iRet = strlen(KeyValue);
if (iRet > MAX_PRIKEYVALUE_LEN)
{
return "{\"RETCODE\":-6,\"ERRORINFO\":\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD>\"}";
}
try
{
iRet = GbkToUtf8(skey,KeyValue);
if(iRet <0)
{
return "{\"RETCODE\":-104,\"ERRORINFO\":\"<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>תutf8 ʧ<><CAA7>\"}";
}
stemp = "SELECT * FROM ";
stemp.append(m_TableName);
stemp.append(" WHERE ");
stemp.append(m_PriKey);
stemp.append("='");
stemp.append(skey);
stemp.append("'");
iRet = sqlite3_get_table(m_dbptr, stemp.c_str(), &dbResult, &nRow, &nColumn, &errmsg);
if (SQLITE_OK != iRet)
{
sqlite3_free_table(dbResult);
iFlag = 1;
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯʧ<D1AF><CAA7>",m_SqliteFileName,stemp.c_str());
return "{\"RETCODE\":-7,\"ERRORINFO\":\"SQL ִ<>д<EFBFBD><D0B4><EFBFBD>\"}";
}
if(0 == nRow)
{
sqlite3_free_table(dbResult);
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ δ<>ҵ<EFBFBD>",m_SqliteFileName,stemp.c_str());
iFlag = 1;
return "{\"RETCODE\":-8,\"ERRORINFO\":\"SQL δ<>ҵ<EFBFBD><D2B5><EFBFBD>¼\"}";
}
bFound = true;
if (!bFindAll)
{
sRecord = "{\"RETCODE\":1";
iRet = nColumn ;
for (int j = 0; j < nColumn; j++)
{
sRecord.append(",\"");
sRecord.append(dbResult[j]);
sRecord.append("\":\"");
if(dbResult[iRet])
{
sRecord.append(dbResult[iRet]);
}
sRecord.append("\"");
iRet++;
}
sRecord.append(",\"backup2\":\"");
sRecord.append(m_SqlVersion);
sRecord += "\"}";
sqlite3_free_table(dbResult);
iFlag = 1;
stemp ="";
iRet = Utf8ToGbk(stemp,sRecord);
if(iRet <0)
{
bFound = false;
stemp = "{\"RETCODE\":-101,\"ERRORINFO\":\"<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\"}";
}
return stemp;
}
stemp = "";
sRecord = "{\"RETCODE\":1,\"DATA\":[";
for (int i = 0; i < nRow; i++)
{
if (0 == i)
{
stemp.append("{");
}
else
{
stemp.append(",{");
}
iRet = nColumn * (i + 1);
for (int j = 0; j < nColumn; j++)
{
if (j > 0)
{
stemp.append(",");
}
stemp.append("\"");
stemp.append(dbResult[j]);
stemp.append("\":\"");
if(dbResult[iRet])
{
stemp.append(dbResult[iRet]);
}
stemp.append("\"");
iRet++;
}
stemp.append(",\"backup2\":\"");
stemp.append(m_SqlVersion);
stemp.append("\"}");
}
sRecord.append(stemp);
sRecord.append("]}");
}
catch (...)
{
if (0 == iFlag)
{
sqlite3_free_table(dbResult);
}
sRecord = "{\"RETCODE\":-100,\"ERRORINFO\":\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"}";
return sRecord;
}
sqlite3_free_table(dbResult);
stemp ="";
iRet = Utf8ToGbk(stemp,sRecord);
if(iRet <0)
{
bFound = false;
stemp = "{\"RETCODE\":-101,\"ERRORINFO\":\"<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\"}";
}
return stemp;
}
string mySqlite::FinDWhere(const char *pWhere, bool &bFound)
{
if (!m_dbptr)
{
bFound = false;
return "{\"RETCODE\":-5,\"ERRORINFO\":\"SQL<EFBFBD>ļ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"}";
}
int iRet;
// int iLen;
char * errmsg = NULL;
char **dbResult; //<2F><> char ** <20><><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>*<2A><>
int nRow, nColumn;
string stemp,sRecord,skey;
int iFlag = 0;
//char buf[16];
bFound = false;
try
{
iRet = GbkToUtf8(skey,pWhere);
if(iRet <0)
{
return "{\"RETCODE\":-104,\"ERRORINFO\":\"<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>תutf8 ʧ<><CAA7>\"}";
}
stemp = "SELECT * FROM ";
stemp.append(m_TableName);
stemp.append(" WHERE ");
stemp.append(skey);
iRet = sqlite3_get_table(m_dbptr, stemp.c_str(), &dbResult, &nRow, &nColumn, &errmsg);
if (SQLITE_OK != iRet)
{
sqlite3_free_table(dbResult);
iFlag = 1;
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯʧ<D1AF><CAA7>",m_SqliteFileName,stemp.c_str());
return "{\"RETCODE\":-7,\"ERRORINFO\":\"SQL ִ<>д<EFBFBD><D0B4><EFBFBD>\"}";
}
if(0 == nRow)
{
sqlite3_free_table(dbResult);
// WriteLog("<22><><EFBFBD>ݿ<EFBFBD> %s sql <20><><EFBFBD><EFBFBD> %s <20><>ѯ δ<>ҵ<EFBFBD>",m_SqliteFileName,stemp.c_str());
iFlag = 1;
return "{\"RETCODE\":-8,\"ERRORINFO\":\"SQL δ<>ҵ<EFBFBD><D2B5><EFBFBD>¼\"}";
}
bFound = true;
/* if (!bFindAll)
{
sRecord = "{\"RETCODE\":1";
iRet = nColumn ;
for (int j = 0; j < nColumn; j++)
{
sRecord.append(",\"");
sRecord.append(dbResult[j]);
sRecord.append("\":\"");
sRecord.append(dbResult[iRet]);
sRecord.append("\"");
iRet++;
}
sRecord.append(",\"backup2\":\"");
sRecord.append(m_SqlVersion);
sRecord += "\"}";
sqlite3_free_table(dbResult);
iFlag = 1;
return sRecord;
}
*/
stemp = "";
sRecord = "{\"RETCODE\":1,\"DATA\":[";
for (int i = 0; i < nRow; i++)
{
if (0 == i)
{
stemp.append("{");
}
else
{
stemp.append(",{");
}
iRet = nColumn * (i + 1);
for (int j = 0; j < nColumn; j++)
{
if (j > 0)
{
stemp.append(",");
}
stemp.append("\"");
stemp.append(dbResult[j]);
stemp.append("\":\"");
if(dbResult[iRet])
{
stemp.append(dbResult[iRet]);
}
stemp.append("\"");
iRet++;
}
stemp.append(",\"backup2\":\"");
stemp.append(m_SqlVersion);
stemp.append("\"}");
}
sRecord.append(stemp);
sRecord.append("]}");
}
catch (...)
{
if (0 == iFlag)
{
sqlite3_free_table(dbResult);
}
sRecord = "{\"RETCODE\":-100,\"ERRORINFO\":\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"}";
return sRecord;
}
sqlite3_free_table(dbResult);
stemp ="";
iRet = Utf8ToGbk(stemp,sRecord);
if(iRet <0)
{
bFound = false;
stemp = "{\"RETCODE\":-101,\"ERRORINFO\":\"<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\"}";
}
return stemp;
}
int mySqlite::GetWriteTime( const char * pName)
{
// HANDLE hdle;
// BOOL bRet;
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile(pName,&ffd);
if(INVALID_HANDLE_VALUE == hFind)
{
WriteLog("<EFBFBD>ļ<EFBFBD> %s δ<>ҵ<EFBFBD>",pName);
return -1;
}
m_WriteTime = ffd.ftLastWriteTime;
FindClose(hFind);
return 0;
}
string mySqlite::GetFileDate()
{
if(m_dbptr)
{
FILETIME localTime;
if (FileTimeToLocalFileTime(&m_WriteTime, &localTime))
{
SYSTEMTIME sysTime;
if (FileTimeToSystemTime(&localTime, &sysTime))
{
char strTime[50] = { 0 };
sprintf(strTime, "%04d-%02d-%02dT%02d:%02d:%02d", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
return strTime;
}
}
}
return "2000-01-01T00:00:00";
}
string mySqlite::GetFieldValueByName(const char * pFieldName)
{
if (!m_dbptr)
{
return "";
}
int iRet;
int iLen;
char * errmsg = NULL;
char **dbResult; //<2F><> char ** <20><><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>*<2A><>
int nRow, nColumn;
//char buf[16];
string stemp;
iLen = strlen(pFieldName);
if (iLen > MAX_PRIKEYNAME_LEN)
{
return "";
}
stemp = "SELECT ";
stemp.append(pFieldName);
stemp.append(" FROM ");
stemp.append(SQL_IDXTAB_STR);
stemp.append(" LIMIT 1");
iRet = sqlite3_get_table(m_dbptr, stemp.c_str(), &dbResult, &nRow, &nColumn, &errmsg);
if (SQLITE_OK != iRet)
{
sqlite3_free_table(dbResult);
return "";
}
if (0 != strcmp(dbResult[0], pFieldName))
{
sqlite3_free_table(dbResult);
return "";
}
stemp = dbResult[1];
sqlite3_free_table(dbResult);
//Close();
return stemp;
}
int mySqlite::isnumer(char cChar,int base)
{
if(10 == base)
{
if ((cChar >= 0x30) && (cChar <= 0x39))
{
return 0;
}
else
{
return -1;
}
}
else if(16 == base)
{
if ((cChar >= 0x30) && (cChar <= 0x39))
{
return 0;
}
else if((cChar >= 0x41) && (cChar <= 0x46))
{
return 0;
}
else if((cChar >= 0x61) && (cChar <= 0x66))
{
return 0;
}
else
{
return -2;
}
}
return -2;
}
int mySqlite::isnumer(char * buf,int base)
{
int iLen;
int iRet;
iLen = strlen(buf);
if(0 == iLen)
{
return -1;
}
for(int i=0; i<iLen; i++)
{
iRet = isnumer(buf[i],base);
if(iRet <0)
{
return -2;
}
}
return 0;
}