// stdafx.cpp : source file that includes just the standard includes // zc2lyfz.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file // 全局变量; CDatabase *g_pDBPtr = NULL; char g_szDBSource[MAX_PATH]; // 数据库源(服务所在IP或计算机名); char g_szDBServerPort[MAX_PATH]; // 数据库源端口; char g_szDBAccount[MAX_PATH]; // 数据库登录用户; char g_szDBPassWord[MAX_PATH]; // 数据库登录密码; char g_szDBName[MAX_PATH]; // 数据库名称; string g_strconnect = ""; string g_sqlVerion = "CREATE TABLE [dbo].[version](" "[version] [nvarchar](8) NULL," "[curdate] [varchar](50) NULL," "[check1] [nvarchar](4) NULL," "[check2] [nvarchar](4) NULL," "[check3] [nvarchar](4) NULL," "[check4] [nvarchar](4) NULL," "[edit1] [nvarchar](8) NULL," "[edit2] [nvarchar](8) NULL," "[edit3] [nvarchar](8) NULL," "[edit4] [nvarchar](8) NULL," "[info1] [nvarchar](50) NULL," "[info2] [nvarchar](50) NULL," "[info3] [nvarchar](50) NULL," "[info4] [nvarchar](50) NULL," "[info5] [nvarchar](50) NULL," "[bak1] [nvarchar](50) NULL," "[bak2] [nvarchar](50) NULL," "[bak3] [nvarchar](50) NULL," "[bak4] [nvarchar](50) NULL," "[bak5] [nvarchar](50) NULL," "[bak6] [nvarchar](50) NULL," "[baktime] [nvarchar](4) NULL," "[bakserver1] [nvarchar](50) NULL," "[bakserver2] [nvarchar](50) NULL," "[bakserver3] [nvarchar](50) NULL," "[bakserver4] [nvarchar](50) NULL," "[bakserver5] [nvarchar](50) NULL," "[msgaccount] [nvarchar](24) NULL," "[msgpsw] [nvarchar](16) NULL," "[msgused] [nvarchar](50) NULL," "[msgbalance] [nvarchar](50) NULL," "[msgcheck1] [nvarchar](4) NULL," "[msgcheck2] [nvarchar](4) NULL," "[msgdays1] [nvarchar](50) NULL," "[msgdays2] [nvarchar](50) NULL," "[msgcontent1] [nvarchar](max) NULL," "[msgcontent2] [nvarchar](max) NULL," "[remarks] [nvarchar](max) NULL," "[rate] [nvarchar](50) NULL," "[msgcheck3] [nvarchar](50) NULL," "[msgcontent3] [nvarchar](max) NULL," "[salarycheck1] [nvarchar](50) NULL," "[salarycheck2] [nvarchar](50) NULL," "[msgcheck4] [nvarchar](50) NULL," "[msgtime] [nvarchar](50) NULL," "[msgphones] [nvarchar](max) NULL," "[info6] [nvarchar](50) NULL," "[msgcompanyname] [nvarchar](50) NULL," "[msgphones2] [nvarchar](max) NULL," "[msgsendtype] [nvarchar](50) NULL," "[msgcontent5] [nvarchar](max) NULL," "[msgcheck5] [nvarchar](50) NULL," "[msgcontent6] [nvarchar](max) NULL," "[msgcheck6] [nvarchar](50) NULL," "[cardlength] [varchar](50) NULL," "[salarycheck3] [nvarchar](50) NULL," "[salarycheck4] [nvarchar](50) NULL," "[setcheck1] [nvarchar](50) NULL," "[setcheck2] [nvarchar](50) NULL," "[setcheck3] [nvarchar](50) NULL," "[setcheck4] [nvarchar](50) NULL," "[setcheck5] [nvarchar](50) NULL," "[printer1] [nvarchar](50) NULL," "[printer2] [nvarchar](50) NULL," "[printer3] [nvarchar](50) NULL," "[setprintstyle] [nvarchar](50) NULL," "[uploadcheck1] [nvarchar](50) NULL," "[uploadcheck2] [nvarchar](50) NULL," "[uploadcheck3] [nvarchar](50) NULL," "[uploadcheck4] [nvarchar](50) NULL," "[bak11] [nvarchar](50) NULL," "[bak22] [nvarchar](50) NULL," "[bak33] [nvarchar](50) NULL," "[bak44] [nvarchar](50) NULL," "[setprintstyle2] [nvarchar](50) NULL," "[setcheck10] [nvarchar](50) NULL," "[ziptype1] [nvarchar](50) NULL," "[ziptype2] [nvarchar](50) NULL," "[ziptype3] [nvarchar](50) NULL," "[ziptype4] [nvarchar](50) NULL," "[salaryset] [nvarchar](max) NULL," "[limitcount1] [nvarchar](50) NULL," "[limitcount2] [nvarchar](50) NULL," "[limitcount3] [nvarchar](50) NULL," "[rate2] [nvarchar](50) NULL," "[setcheck11] [nvarchar](50) NULL," "[setcheck12] [nvarchar](50) NULL," "[setprintstyle3] [nvarchar](50) NULL," "[msgcheck7] [nvarchar](50) NULL," "[msgcheck8] [nvarchar](50) NULL," "[msgcheck9] [nvarchar](50) NULL," "[msgcheck10] [nvarchar](50) NULL," "[msgcontent8] [nvarchar](max) NULL," "[msgcontent9] [nvarchar](max) NULL," "[msgcontent10] [nvarchar](max) NULL," "[setcheck13] [nvarchar](50) NULL," "[time1] [nvarchar](50) NULL," "[time2] [nvarchar](50) NULL," "[time3] [nvarchar](50) NULL," "[setcheck14] [nvarchar](50) NULL," "[setcheck15] [nvarchar](50) NULL," "[msgcheck11] [nvarchar](50) NULL," "[msgcheck12] [nvarchar](50) NULL," "[msgcheck13] [nvarchar](50) NULL," "[msgcheck14] [nvarchar](50) NULL," "[msgcontent11] [nvarchar](max) NULL," "[msgcontent12] [nvarchar](max) NULL," "[msgcontent13] [nvarchar](max) NULL," "[msgcontent14] [nvarchar](max) NULL," "[setcheck6] [nvarchar](50) NULL," "[msgcheck15] [nvarchar](50) NULL," "[msgcontent15] [nvarchar](max) NULL," "[logdays] [nvarchar](50) NULL," "[setcheck17] [nvarchar](50) NULL," "[setcheck18] [nvarchar](50) NULL," "[setcheck19] [nvarchar](50) NULL," "[uploadrule] [nvarchar](max) NULL," "[setcheck20] [nvarchar](50) NULL," "[cardnum] [nvarchar](50) NULL," "[cardscale] [nvarchar](500) NULL," "[info7] [nvarchar](120) NULL," "[setcheck21] [nvarchar](50) NULL," "[msgcheck16] [nvarchar](50) NULL," "[hospitalmsgcheck1] [nvarchar](50) NULL," "[hospitalmsgcheck2] [nvarchar](50) NULL," "[uVer] [float] NOT NULL Default(0.0)," "[serialno] [nvarchar](50) NULL," "[serialno2] [nvarchar](50) NULL," "[msgcheck17] [nvarchar](50) NULL," "[msgcontent17] [nvarchar](max) NULL," "[setcheck22] [nvarchar](50) NULL," "[setcheck23] [nvarchar](50) NULL," "[info8] [nvarchar](120) NULL," "[setcheck24] [nvarchar](120) NULL," "[outtime] [nvarchar](120) NULL," "[info9] [nvarchar](120) NULL," "[reverse1] [nvarchar](50) NULL," "[reverse2] [nvarchar](50) NULL," "[reverse3] [nvarchar](50) NULL," "[reverse4] [nvarchar](50) NULL," "[reverse5] [nvarchar](4000) NULL," "[msAccount] [nvarchar](12) NULL," "[msPassword] [nvarchar](16) NULL," "[photo] [image] NULL," "[delcheck1] [nvarchar](50) NULL," "[delcheck2] [nvarchar](50) NULL," "[delcheck3] [nvarchar](50) NULL," "[delcheck4] [nvarchar](50) NULL," "[deledit1] [nvarchar](50) NULL," "[deledit2] [nvarchar](50) NULL," "[deledit3] [nvarchar](50) NULL," "[deledit4] [nvarchar](50) NULL," "[alarmdays1] [nvarchar](50) NULL," "[alarmdays2] [nvarchar](50) NULL," "[alarmdays3] [nvarchar](50) NULL," "[alarmdays4] [nvarchar](50) NULL," "[alarmdays5] [nvarchar](50) NULL," "[alarmdays6] [nvarchar](50) NULL," "[original] [bit] NOT NULL Default(0)" ") ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"; string g_sqlNetshare = "CREATE TABLE [dbo].[NetShareInfo](" "[enable] [bit] NOT NULL," "[branchid] [nvarchar](32) NOT NULL," "[sharePath] [nvarchar](64) NOT NULL," "[mincapacity] [tinyint] NOT NULL," "[maxcapacity] [tinyint] NOT NULL," "[photoType] [tinyint] NOT NULL," "[priority] [tinyint] NOT NULL," "CONSTRAINT [PK_NetShareInfo] PRIMARY KEY CLUSTERED ([sharePath] ASC" ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]," "CONSTRAINT [UPK_NetShareInfo] UNIQUE NONCLUSTERED (" "[branchid] ASC," "[photoType] ASC," "[priority] ASC" ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" ") ON [PRIMARY]"; // 宏定义; #define DB_SS_CONN_WITH_PORT _T("driver={SQL Server};Server=%s,%s;database=%s;uid=%s;pwd=%s") #define DB_SS_CONN_WITHOUT_PORT _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s") #define DB_SS_CONN_WITHOUT_PORT2 _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s") #define DB_SW_CONN_WITH_PORT _T("Driver={SQL Server};Server=%s,%s;Database=%s;Trusted_Connection=yes;") #define DB_SW_CONN_WITHOUT_PORT _T("Driver={SQL Server};Server=%s;Database=%s;Trusted_Connection=yes;") #define DB_SW_CONN_WITHOUT_PORT2 _T("Driver={SQL Server};Server=%s;Database=%s;Trusted_Connection=yes;") /************************************************************************/ /* 函数:[3/12/2018 Jeff]; /* 描述:; /* 参数:; /* [IN] szPath:; /* [IN] szIniName:; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ int GetIniInfo(const char *szPath, const char *szIniName) { char szDrive[_MAX_DRIVE] = { 0 }; char szDir[_MAX_DIR] = { 0 }; char szFna[_MAX_DIR] = { 0 }; char szExt[_MAX_DIR] = { 0 }; char szModulepath[MAX_PATH] = {0}; char szModulefile[MAX_PATH] = {0}; ::GetModuleFileName(NULL, szModulepath, sizeof(szModulepath) / sizeof(TCHAR)); sprintf(szModulefile, _T("%s"), szModulepath); _tsplitpath(szModulepath, szDrive, szDir, szFna, szExt); _tcscpy(szModulepath, szDrive); _tcscat(szModulepath, szDir); char szInifile[MAX_PATH] = { 0 }; if (szPath != NULL && szIniName != NULL) sprintf(szInifile, _T("%s%s"), szPath, szIniName); else sprintf(szInifile, _T("%sServiceInfo.ini"), szModulepath); HANDLE hFile = CreateFile(szInifile, 0/*GENERIC_READ*/, 0, NULL, OPEN_EXISTING, 0, NULL); if (ERROR_FILE_NOT_FOUND == GetLastError()) { return -1; } CloseHandle(hFile); hFile = NULL; // 获取服务器端信息; GetPrivateProfileString(_T("DatabaseInfo"), _T("dbSource"), _T(""), g_szDBSource, MAX_PATH, szInifile); GetPrivateProfileString(_T("DatabaseInfo"), _T("dbServerPort"), _T(""), g_szDBServerPort, MAX_PATH, szInifile); GetPrivateProfileString(_T("DatabaseInfo"), _T("dbAccount"), _T(""), g_szDBAccount, MAX_PATH, szInifile); GetPrivateProfileString(_T("DatabaseInfo"), _T("dbPassWord"), _T(""), g_szDBPassWord, MAX_PATH, szInifile); GetPrivateProfileString(_T("DatabaseInfo"), _T("dbName"), _T(""), g_szDBName, MAX_PATH, szInifile); return 0; } /************************************************************************/ /* 函数:[3/12/2018 Jeff]; /* 描述:; /* 参数:; /* [IN] server: 数据服务器名(或IP地址); /* [IN] port: 数据服务器端口; /* [IN] dbuser: 数据库用户名; /* [IN] dbpassword: 数据库登录密码; /* [IN] dbname: 数据库名称; /* 返回:成功连接数据返回true,否则返回false; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ bool OpenDatabase(string server, string port, string dbuser, string dbpassword, string dbname) { // 关闭之前打开的; if ( g_pDBPtr ) delete g_pDBPtr; g_pDBPtr = NULL; // 参数有效性; if ( server.size() == 0 || dbuser.size() == 0 || dbpassword.size() == 0 || dbname.size() == 0 ) return false; // 生成连接串; char szconn[MAX_PATH] = {0}; if ( port.size() == 0 || port == "0" ) { if (strcmp(dbuser.c_str(), "") == 0 ) sprintf(szconn, DB_SW_CONN_WITHOUT_PORT, server.c_str(), dbname.c_str()); else sprintf(szconn, DB_SS_CONN_WITHOUT_PORT, server.c_str(), dbname.c_str(), dbuser.c_str(), dbpassword.c_str()); } else { if (strcmp(dbuser.c_str(), "") == 0 ) sprintf(szconn, DB_SW_CONN_WITH_PORT, server.c_str(), port.c_str(), dbname.c_str()); else sprintf(szconn, DB_SS_CONN_WITH_PORT, server.c_str(), port.c_str(), dbname.c_str(), dbuser.c_str(), dbpassword.c_str()); } // 赋值全局变量; g_strconnect = szconn; // 打开数据库; if (g_pDBPtr == NULL) { try { g_pDBPtr = new CDatabase; g_pDBPtr->OpenEx(g_strconnect.c_str(), CDatabase::noOdbcDialog); } catch (CDBException* e) { delete g_pDBPtr; g_pDBPtr = NULL; #ifdef _DEBUG OutputDebugString(string(e->m_strError).append("\n").c_str()); #endif e->Delete(); return false; } } return true; } /************************************************************************/ /* 函数:[3/12/2018 Jeff]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ bool IsTableExists(string tabname) { if ( g_pDBPtr == NULL) { cout << "数据库未打开!" << endl; return false; } if ( tabname.size() == 0 ) { cout << "表名空!" << endl; return false; } // 串接语句; char szSql[MAX_PATH] = {0}; sprintf(szSql, "select count(1) as tbcount from sys.objects where name = '%s'", tabname.c_str()); CString strValue; CRecordset set(g_pDBPtr); set.Open(CRecordset::forwardOnly, szSql); set.GetFieldValue("tbcount",strValue); set.Close(); return atoi(strValue) == 0 ? false : true; } /************************************************************************/ /* 函数:[3/12/2018 Jeff]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ int getzcdata(vector &zc) { if ( g_pDBPtr == NULL) { cout << "数据库未打开!" << endl; return false; } // 串接语句; string sql = "select dindan.id as orderId," " clientnew.name1, " " clientnew.name2, " " clientnew.name3, " " clientnew.birthday1, " " clientnew.birthday2, " " clientnew.birthday3, " " clientnew.phone1, " " clientnew.phone2, " " clientnew.qq1, " " clientnew.qq2, " " clientnew.addr1, " " clientnew.addr2, " " clientnew.area, " " clientnew.area2, " " clientnew.time3, " " clientnew.check1, " " clientnew.check2, " " clientnew.check3, " " clientnew.check4, " " clientnew.sex, " " clientnew.zodiac " "from [clientnew] inner join dindan on dindan.clientid = clientnew.clientid"; try{ CRecordset set(g_pDBPtr); set.Open(CRecordset::forwardOnly, sql.c_str()); while (!set.IsEOF()) { zcdata data; set.GetFieldValue("orderId",data.id); set.GetFieldValue("name1",data.name1); set.GetFieldValue("name2",data.name2); set.GetFieldValue("name3",data.name3); set.GetFieldValue("birthday1",data.birthday1); set.GetFieldValue("birthday2",data.birthday2); set.GetFieldValue("birthday3",data.birthday3); set.GetFieldValue("phone1",data.phone1); set.GetFieldValue("phone2",data.phone2); set.GetFieldValue("qq1",data.qq1); set.GetFieldValue("qq2",data.qq2); set.GetFieldValue("addr1",data.addr1); set.GetFieldValue("addr2",data.addr2); set.GetFieldValue("area",data.area); set.GetFieldValue("area2",data.area2); set.GetFieldValue("time3",data.time3); set.GetFieldValue("check1",data.check1); set.GetFieldValue("check2",data.check2); set.GetFieldValue("check3",data.check3); set.GetFieldValue("check4",data.check4); set.GetFieldValue("sex",data.sex); set.GetFieldValue("zodiac",data.zodiac); zc.push_back(data); set.MoveNext(); } set.Close(); } catch(CDBException *e) { cout << e->m_strError << endl; } return zc.size(); } /************************************************************************/ /* 函数:[3/12/2018 Jeff]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ bool zc2lyfz(zcdata &data, bool child) { if ( g_pDBPtr == NULL) { cout << "数据库未打开!" << endl; return false; } // 串接语句; static char szSql[1024*8] = {0}; sprintf(szSql, "select count(1) as ct from client where id = '%s'", data.id); CString strValue; CRecordset set(g_pDBPtr); set.Open(CRecordset::forwardOnly, szSql); set.GetFieldValue("ct",strValue); set.Close(); if ( atoi(strValue) == 0 ) {// 插入; if (child) sprintf(szSql, "insert into client(id,name1,name2,phone1,phone2,qq1,qq2,addr1,addr2,birthday1,birthday2,time3,area,area2,check1,check2,check3,sex,zodiac) " "values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", data.id, data.name1,data.name3, data.phone1, data.phone2, data.qq1,data.qq2,data.addr1,data.addr2,data.birthday1,data.birthday3, data.time3,data.area,data.area2,data.check1,data.check2,data.check3, data.sex,data.zodiac); else sprintf(szSql, "insert into client(id,name1,name2,phone1,phone2,qq1,qq2,addr1,addr2,birthday1,birthday2,time3,area,area2,check1,check2,check3,sex,zodiac) " "values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", data.id, data.name1,data.name2, data.phone1, data.phone2, data.qq1,data.qq2,data.addr1,data.addr2,data.birthday1,data.birthday2, data.time3,data.area,data.area2,data.check1,data.check2,data.check3, data.sex,data.zodiac); } else {// 更新; if (child) sprintf(szSql, "update client set name1 = '%s'," " name2 = '%s'," " phone1 = '%s'," " phone2 = '%s'," " qq1 = '%s', " " qq2 = '%s'," " addr1 = '%s', addr2 = '%s', birthday1 = '%s', birthday2 = '%s', time3 = '%s', area = '%s'," " area2 = '%s', check1 = '%s', check2 = '%s', check3 = '%s', sex = '%s', zodiac = '%s' where id = '%s' ", data.name1,data.name3, data.phone1, data.phone2, data.qq1,data.qq2,data.addr1,data.addr2,data.birthday1,data.birthday3, data.time3,data.area,data.area2,data.check1,data.check2,data.check3, data.sex,data.zodiac,data.id); else sprintf(szSql, "update client set name1 = '%s'," "name2 = '%s'," "phone1 = '%s'," "phone2 = '%s', " "qq1 = '%s', " "qq2 = '%s'," "addr1 = '%s', addr2 = '%s', birthday1 = '%s', birthday2 = '%s', time3 = '%s', area = '%s'," "area2 = '%s', check1 = '%s', check2 = '%s', check3 = '%s', sex = '%s', zodiac = '%s' where id = '%s' ", data.name1,data.name2, data.phone1, data.phone2, data.qq1,data.qq2,data.addr1,data.addr2,data.birthday1,data.birthday2, data.time3,data.area,data.area2,data.check1,data.check2,data.check3, data.sex,data.zodiac,data.id); } #ifdef _DEBUG OutputDebugString(szSql); #endif try { g_pDBPtr->ExecuteSQL(szSql); } catch(CDBException *e) { #ifdef _DEBUG OutputDebugString(e->m_strError); #endif } }