|
@@ -3,20 +3,22 @@
|
|
#include "CharEncoding.h"
|
|
#include "CharEncoding.h"
|
|
#include "Global.h"
|
|
#include "Global.h"
|
|
|
|
|
|
|
|
+#define FREE_MSG if ( m_pszErrmsg ) { sqlite3_free(m_pszErrmsg); m_pszErrmsg = NULL;}
|
|
|
|
+
|
|
CDataImpl::CDataImpl(void):m_psqlite3(NULL),m_pszErrmsg(NULL)
|
|
CDataImpl::CDataImpl(void):m_psqlite3(NULL),m_pszErrmsg(NULL)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
CDataImpl::~CDataImpl(void)
|
|
CDataImpl::~CDataImpl(void)
|
|
{
|
|
{
|
|
|
|
+ Close();
|
|
}
|
|
}
|
|
|
|
|
|
BOOL CDataImpl::Open()
|
|
BOOL CDataImpl::Open()
|
|
{
|
|
{
|
|
Close();
|
|
Close();
|
|
CHAR szpath[MAX_PATH] = {0};
|
|
CHAR szpath[MAX_PATH] = {0};
|
|
- _stprintf_s(szpath, _T("%ssms.db"), Global::g_szCurModuleDir );
|
|
|
|
-
|
|
|
|
|
|
+ _stprintf_s(szpath, _T("%ssms.db"), Global::g_szCurModuleDir);
|
|
std::string strPath;
|
|
std::string strPath;
|
|
if ( !CharEncoding::ASCII2UTF8(szpath,strPath))
|
|
if ( !CharEncoding::ASCII2UTF8(szpath,strPath))
|
|
{
|
|
{
|
|
@@ -27,6 +29,25 @@ BOOL CDataImpl::Open()
|
|
if ( nResult != SQLITE_OK )
|
|
if ( nResult != SQLITE_OK )
|
|
return FALSE;
|
|
return FALSE;
|
|
|
|
|
|
|
|
+ // 创建表;
|
|
|
|
+ if ( !QueryTable("MID"))
|
|
|
|
+ {
|
|
|
|
+ sqlite3_exec(m_psqlite3, _CREATE_MID_TABLE_, NULL, NULL, &m_pszErrmsg);
|
|
|
|
+ FREE_MSG
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ( !QueryTable("KeyCopy"))
|
|
|
|
+ {
|
|
|
|
+ sqlite3_exec(m_psqlite3, _CREATE_KC_TABLE_, NULL, NULL, &m_pszErrmsg);
|
|
|
|
+ FREE_MSG
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ( !QueryTable("Log"))
|
|
|
|
+ {
|
|
|
|
+ sqlite3_exec(m_psqlite3, _CREATE_LOG_TABLE_, NULL, NULL, &m_pszErrmsg);
|
|
|
|
+ FREE_MSG
|
|
|
|
+ }
|
|
|
|
+
|
|
return TRUE;
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -36,6 +57,9 @@ void CDataImpl::Close()
|
|
sqlite3_close(m_psqlite3);
|
|
sqlite3_close(m_psqlite3);
|
|
|
|
|
|
m_psqlite3 = NULL;
|
|
m_psqlite3 = NULL;
|
|
|
|
+ if ( m_pszErrmsg )
|
|
|
|
+ sqlite3_free(m_pszErrmsg);
|
|
|
|
+ m_pszErrmsg = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
BOOL CDataImpl::ExecteSQL(IN LPCSTR lpSQL)
|
|
BOOL CDataImpl::ExecteSQL(IN LPCSTR lpSQL)
|
|
@@ -54,13 +78,45 @@ BOOL CDataImpl::ExecteSQL(IN LPCSTR lpSQL)
|
|
if(SQLITE_OK != sqlite_error)
|
|
if(SQLITE_OK != sqlite_error)
|
|
{
|
|
{
|
|
//Global::WriteTextLog(_T("ExecteSQL:%s"), psqlite_error);
|
|
//Global::WriteTextLog(_T("ExecteSQL:%s"), psqlite_error);
|
|
|
|
+ FREE_MSG
|
|
return FALSE;
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
|
|
return TRUE;
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
|
|
-INT CDataImpl::QueryContactsType(IN OUT std::vector<STContactsType> &vtContactsType)
|
|
|
|
|
|
+BOOL CDataImpl::QueryTable(std::string table)
|
|
|
|
+{
|
|
|
|
+ if ( table.size() == 0 )
|
|
|
|
+ {
|
|
|
|
+ //Global::WriteTextLog(_T("ExecteSQL:执行语句空!"));
|
|
|
|
+ return FALSE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(m_psqlite3 == NULL)
|
|
|
|
+ return FALSE;
|
|
|
|
+
|
|
|
|
+ INT nRow = 0;
|
|
|
|
+ INT nCol = 0;
|
|
|
|
+
|
|
|
|
+ char** pazResult = NULL;
|
|
|
|
+ char szSql[MAX_PATH] = {0};
|
|
|
|
+ _stprintf_s(szSql, _T("select * from sqlite_master where type = 'table' and name = '%s'"), table.c_str());
|
|
|
|
+ int sqlite_error = sqlite3_get_table(m_psqlite3, szSql, &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
|
|
+ if ( sqlite_error != SQLITE_OK)
|
|
|
|
+ {
|
|
|
|
+ //Global::WriteTextLog(_T("QueryContactsType:%s"), m_pszErrmsg);
|
|
|
|
+ FREE_MSG
|
|
|
|
+ return FALSE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ sqlite3_free_table(pazResult);
|
|
|
|
+
|
|
|
|
+ return nRow != 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+INT CDataImpl::QueryMidInfo(std::string order, STMid &data)
|
|
{
|
|
{
|
|
if ( m_psqlite3 == NULL )
|
|
if ( m_psqlite3 == NULL )
|
|
return -1;
|
|
return -1;
|
|
@@ -69,26 +125,44 @@ INT CDataImpl::QueryContactsType(IN OUT std::vector<STContactsType> &vtContactsT
|
|
INT nCol = 0;
|
|
INT nCol = 0;
|
|
|
|
|
|
char** pazResult = NULL;
|
|
char** pazResult = NULL;
|
|
- int sqlite_error = sqlite3_get_table(m_psqlite3, "select Autoid, ContactsType from ContactsType", &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
|
|
|
|
+ int sqlite_error = sqlite3_get_table(m_psqlite3, _SELECT_MID_TABLE_, &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
if ( sqlite_error != SQLITE_OK)
|
|
if ( sqlite_error != SQLITE_OK)
|
|
{
|
|
{
|
|
//Global::WriteTextLog(_T("QueryContactsType:%s"), m_pszErrmsg);
|
|
//Global::WriteTextLog(_T("QueryContactsType:%s"), m_pszErrmsg);
|
|
|
|
+ FREE_MSG
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
- for(int i = 1; i <= nRow; i++)
|
|
|
|
|
|
+ if( nRow == 1)
|
|
{
|
|
{
|
|
- STContactsType tagObj;
|
|
|
|
#ifndef USE_UTF8
|
|
#ifndef USE_UTF8
|
|
- tagObj.strAutoid = pazResult[i*nCol + 0];
|
|
|
|
- tagObj.strContactsType = pazResult[i*nCol + 1];
|
|
|
|
|
|
+ data.order = pazResult[nCol+0];
|
|
|
|
+ data.number = pazResult[nCol+1];
|
|
|
|
+ data.pid = pazResult[nCol+2];
|
|
|
|
+ data.ctype = pazResult[nCol+3];
|
|
|
|
+ data.version = pazResult[nCol+4];
|
|
|
|
+ data.purl = pazResult[nCol+5];
|
|
|
|
+ data.psize = pazResult[nCol+6];
|
|
|
|
+ data.pmd5 = pazResult[nCol+7];
|
|
|
|
+ data.status = pazResult[nCol+8];
|
|
|
|
+ data.start_date = pazResult[nCol+9];
|
|
|
|
+ data.finish_date = pazResult[nCol+10];
|
|
|
|
+ data.des = pazResult[nCol+11];
|
|
#else
|
|
#else
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 0], tagObj.strAutoid);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 1], tagObj.strContactsType);
|
|
|
|
|
|
+ data.order = CharEncoding::UTF82ASCII(pazResult[nCol+0]);
|
|
|
|
+ data.number = pazResult[nCol+1];
|
|
|
|
+ data.pid = pazResult[nCol+2];
|
|
|
|
+ data.ctype = CharEncoding::UTF82ASCII(pazResult[nCol+3]);
|
|
|
|
+ data.version = CharEncoding::UTF82ASCII(pazResult[nCol+4]);
|
|
|
|
+ data.purl = CharEncoding::UTF82ASCII(pazResult[nCol+5]);
|
|
|
|
+ data.psize = pazResult[nCol+6];
|
|
|
|
+ data.pmd5 = CharEncoding::UTF82ASCII(pazResult[nCol+7]);
|
|
|
|
+ data.status = pazResult[nCol+8];
|
|
|
|
+ data.start_date = CharEncoding::UTF82ASCII(pazResult[nCol+9]);
|
|
|
|
+ data.finish_date = CharEncoding::UTF82ASCII(pazResult[nCol+10]);
|
|
|
|
+ data.des = CharEncoding::UTF82ASCII(pazResult[nCol+11]);
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
- vtContactsType.push_back(tagObj);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
sqlite3_free_table(pazResult);
|
|
sqlite3_free_table(pazResult);
|
|
@@ -96,7 +170,7 @@ INT CDataImpl::QueryContactsType(IN OUT std::vector<STContactsType> &vtContactsT
|
|
return nRow;
|
|
return nRow;
|
|
}
|
|
}
|
|
|
|
|
|
-INT CDataImpl::QueryContactsInfo(IN OUT std::vector<STContactsInfo> &vtContactsInfo)
|
|
|
|
|
|
+INT CDataImpl::QueryKeyInfo(std::string sn, STKeyCopy &data)
|
|
{
|
|
{
|
|
if ( m_psqlite3 == NULL )
|
|
if ( m_psqlite3 == NULL )
|
|
return -1;
|
|
return -1;
|
|
@@ -105,33 +179,31 @@ INT CDataImpl::QueryContactsInfo(IN OUT std::vector<STContactsInfo> &vtContactsI
|
|
INT nCol = 0;
|
|
INT nCol = 0;
|
|
|
|
|
|
char** pazResult = NULL;
|
|
char** pazResult = NULL;
|
|
- int sqlite_error = sqlite3_get_table(m_psqlite3, "select Autoid, ContactsType, ContactsName,ContactsPhone, ContactsStatus from ContactsInfo", &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
|
|
|
|
+ int sqlite_error = sqlite3_get_table(m_psqlite3, _SELECT_KC_TABLE_, &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
if ( sqlite_error != SQLITE_OK)
|
|
if ( sqlite_error != SQLITE_OK)
|
|
{
|
|
{
|
|
//Global::WriteTextLog(_T("QueryContactsInfo:%s"), m_pszErrmsg);
|
|
//Global::WriteTextLog(_T("QueryContactsInfo:%s"), m_pszErrmsg);
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
- for(int i = 1; i <= nRow; i++)
|
|
|
|
|
|
+ if ( nRow == 1)
|
|
{
|
|
{
|
|
- STContactsInfo tagObj;
|
|
|
|
-
|
|
|
|
#ifndef USE_UTF8
|
|
#ifndef USE_UTF8
|
|
- tagObj.strAutoid = pazResult[i*nCol + 0];
|
|
|
|
- tagObj.strContactsType = pazResult[i*nCol + 1];
|
|
|
|
- tagObj.strContactsName = pazResult[i*nCol + 2];
|
|
|
|
- tagObj.strContactsPhone = pazResult[i*nCol + 3];
|
|
|
|
- tagObj.strContactsStatus = pazResult[i*nCol + 4];
|
|
|
|
|
|
+ data.sn = pazResult[nCol+0];
|
|
|
|
+ data.keys = pazResult[nCol+1];
|
|
|
|
+ data.copy_date = pazResult[nCol+2];
|
|
|
|
+ data.report_date = pazResult[nCol+3];
|
|
|
|
+ data.copy_status = pazResult[nCol+4];
|
|
|
|
+ data.report_status = pazResult[nCol+5];
|
|
#else
|
|
#else
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 0], tagObj.strAutoid);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 1], tagObj.strContactsType);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 2], tagObj.strContactsName);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 3], tagObj.strContactsPhone);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 4], tagObj.strContactsStatus);
|
|
|
|
|
|
+ data.sn = CharEncoding::UTF82ASCII(pazResult[nCol+0]);
|
|
|
|
+ data.keys = CharEncoding::UTF82ASCII(pazResult[nCol+1]);
|
|
|
|
+ data.copy_date = CharEncoding::UTF82ASCII(pazResult[nCol+2]);
|
|
|
|
+ data.report_date = CharEncoding::UTF82ASCII(pazResult[nCol+3]);
|
|
|
|
+ data.copy_status = pazResult[nCol+4];
|
|
|
|
+ data.report_status = pazResult[nCol+5];
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
- vtContactsInfo.push_back(tagObj);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
sqlite3_free_table(pazResult);
|
|
sqlite3_free_table(pazResult);
|
|
@@ -139,7 +211,7 @@ INT CDataImpl::QueryContactsInfo(IN OUT std::vector<STContactsInfo> &vtContactsI
|
|
return nRow;
|
|
return nRow;
|
|
}
|
|
}
|
|
|
|
|
|
-INT CDataImpl::QueryTaskInfo(IN OUT std::vector<STTaskInfo> &vtTaskInfo)
|
|
|
|
|
|
+INT CDataImpl::QueryLogInfo(std::string sn, STLog &data)
|
|
{
|
|
{
|
|
if ( m_psqlite3 == NULL )
|
|
if ( m_psqlite3 == NULL )
|
|
return -1;
|
|
return -1;
|
|
@@ -148,37 +220,25 @@ INT CDataImpl::QueryTaskInfo(IN OUT std::vector<STTaskInfo> &vtTaskInfo)
|
|
INT nCol = 0;
|
|
INT nCol = 0;
|
|
|
|
|
|
char** pazResult = NULL;
|
|
char** pazResult = NULL;
|
|
- int sqlite_error = sqlite3_get_table(m_psqlite3, "select Autoid,TirrgerTime, TaskPhone, TaskContent, ExecDate, TaskStatus, TirrgerCycle from TaskInfo", &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
|
|
|
|
+ int sqlite_error = sqlite3_get_table(m_psqlite3, _SELECT_LOG_TABLE_, &pazResult, &nRow, &nCol, &m_pszErrmsg);
|
|
if ( sqlite_error != SQLITE_OK)
|
|
if ( sqlite_error != SQLITE_OK)
|
|
{
|
|
{
|
|
//Global::WriteTextLog(_T("QueryTaskInfo:%s"), m_pszErrmsg);
|
|
//Global::WriteTextLog(_T("QueryTaskInfo:%s"), m_pszErrmsg);
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
- for(int i = 1; i <= nRow; i++)
|
|
|
|
|
|
+ if ( nRow == 1 )
|
|
{
|
|
{
|
|
- STTaskInfo tagObj;
|
|
|
|
-
|
|
|
|
#ifndef USE_UTF8
|
|
#ifndef USE_UTF8
|
|
- tagObj.strAutoid = pazResult[i*nCol + 0];
|
|
|
|
- tagObj.strTirrgerTime = pazResult[i*nCol + 1];
|
|
|
|
- tagObj.strTaskPhone = pazResult[i*nCol + 2];
|
|
|
|
- tagObj.strTaskContent = pazResult[i*nCol + 3];
|
|
|
|
- tagObj.strExecDate = pazResult[i*nCol + 4];
|
|
|
|
- tagObj.strTaskStatus = pazResult[i*nCol + 5];
|
|
|
|
- tagObj.strTirrgerCycle = pazResult[i*nCol + 6];
|
|
|
|
|
|
+ data.type = pazResult[nCol+0];
|
|
|
|
+ data.sn = pazResult[nCol+1];
|
|
|
|
+ data.content = pazResult[nCol+2];
|
|
#else
|
|
#else
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
// 由Native for SQLite3插入的数据,都是utf8格式;
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 0], tagObj.strAutoid);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 1], tagObj.strTirrgerTime);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 2], tagObj.strTaskPhone);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 3], tagObj.strTaskContent);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 4], tagObj.strExecDate);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 5], tagObj.strTaskStatus);
|
|
|
|
- CharEncoding::UTF82ASCII(pazResult[i*nCol + 6], tagObj.strTirrgerCycle);
|
|
|
|
|
|
+ data.type = CharEncoding::UTF82ASCII(pazResult[nCol+0]);
|
|
|
|
+ data.sn = CharEncoding::UTF82ASCII(pazResult[nCol+1]);
|
|
|
|
+ data.content = CharEncoding::UTF82ASCII(pazResult[nCol+2]);
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
- vtTaskInfo.push_back(tagObj);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
sqlite3_free_table(pazResult);
|
|
sqlite3_free_table(pazResult);
|
|
@@ -186,6 +246,7 @@ INT CDataImpl::QueryTaskInfo(IN OUT std::vector<STTaskInfo> &vtTaskInfo)
|
|
return nRow;
|
|
return nRow;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if 0
|
|
INT CDataImpl::QuerySendRecord(IN OUT std::vector<STSendRecord> &vtSendRecord)
|
|
INT CDataImpl::QuerySendRecord(IN OUT std::vector<STSendRecord> &vtSendRecord)
|
|
{
|
|
{
|
|
if ( m_psqlite3 == NULL )
|
|
if ( m_psqlite3 == NULL )
|
|
@@ -944,3 +1005,4 @@ BOOL CDataImpl::ClearnTaskStatus(IN LPCSTR lpAutoid)
|
|
|
|
|
|
return TRUE;
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
+#endif
|