`

DBManager.h

 
阅读更多
  1. //SaioSqlce.cpp:implementationoftheCDBManageclass.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #ifndefSAIOSQLCE_DLL_FILE
  5. #defineSAIOSQLCE_DLL_FILE
  6. #endif
  7. #include"stdafx.h"
  8. #include"SAIOSQLCEDBManage.h"
  9. #include"SaioSqlce.h"
  10. #ifdef_DEBUG
  11. #undefTHIS_FILE
  12. staticcharTHIS_FILE[]=__FILE__;
  13. #definenewDEBUG_NEW
  14. #endif
  15. //本机数据库文件
  16. #defineCUP_DB_FILE_T("\\Saio\\UserPrograms\\WIC\\WICDB.sdf")
  17. #defineCUP_DB_TEMP_T("\\Saio\\UserPrograms\\WIC\\WICDB.sd2")
  18. //////////////////////////////////////////////////////////////////////
  19. //Construction/Destruction
  20. //////////////////////////////////////////////////////////////////////
  21. CDBManage::CDBManage()
  22. {
  23. }
  24. CDBManage::~CDBManage()
  25. {
  26. }
  27. //打开数据库
  28. BOOLCDBManage::OpenDB()
  29. {
  30. InitConnectvariable(_T("\\Saio\\UserPrograms\\WIC\\WICDB.sdf"));
  31. returnOpenConnection();
  32. }
  33. //关闭数据库
  34. BOOLCDBManage::CloseDB()
  35. {
  36. BOOLbRet=TRUE;
  37. bRet=CloseRecordset();
  38. bRet&=CloseConnection();
  39. returnbRet;
  40. }
  41. //收缩数据库
  42. BOOLCDBManage::ShrinkDB()//需要修改
  43. {
  44. CloseDB();
  45. TCHARszDbPwd[]=_T("");//如果有密码需要填入
  46. BOOLbRet=TRUE,bDelRet=FALSE;
  47. DWORDdwErr=0;
  48. HRESULThr=NOERROR;
  49. DBPROPSETdbpropset[2];
  50. DBPROPdbprop[2];
  51. IDBProperties*pIDBProperties=NULL;
  52. IDBCreateSession*pIDBCreateSession=NULL;
  53. ISSCECompact*pISSCECompact=NULL;
  54. IDBSchemaRowset*pIDBSchemaRowset=NULL;
  55. VariantInit(&dbprop[0].vValue);
  56. hr=CoCreateInstance(CLSID_SQLSERVERCE_2_0,0,CLSCTX_INPROC_SERVER,IID_IDBProperties,(void**)&pIDBProperties);
  57. if(FAILED(hr))
  58. {
  59. dwErr=GetLastError();
  60. bRet=FALSE;
  61. gotoExit;
  62. }
  63. dbprop[0].dwPropertyID=DBPROP_INIT_DATASOURCE;
  64. dbprop[0].dwOptions=DBPROPOPTIONS_REQUIRED;
  65. dbprop[0].vValue.vt=VT_BSTR;
  66. dbprop[0].vValue.bstrVal=SysAllocString(CUP_DB_FILE);
  67. if(NULL==dbprop[0].vValue.bstrVal)
  68. {
  69. hr=E_OUTOFMEMORY;
  70. dwErr=GetLastError();
  71. bRet=FALSE;
  72. gotoExit;
  73. }
  74. dbprop[1].dwPropertyID=DBPROP_SSCE_DBPASSWORD;
  75. dbprop[1].dwOptions=DBPROPOPTIONS_REQUIRED;
  76. dbprop[1].vValue.vt=VT_BSTR;
  77. dbprop[1].vValue.bstrVal=SysAllocString(szDbPwd);
  78. dbpropset[0].guidPropertySet=DBPROPSET_DBINIT;
  79. dbpropset[0].rgProperties=dbprop;
  80. dbpropset[0].cProperties=1;
  81. ;
  82. dbpropset[1].guidPropertySet=DBPROPSET_SSCE_DBINIT;
  83. dbpropset[1].rgProperties=&dbprop[1];
  84. dbpropset[1].cProperties=1;
  85. hr=pIDBProperties->SetProperties(2,dbpropset);
  86. if(FAILED(hr))
  87. {
  88. dwErr=GetLastError();
  89. bRet=FALSE;
  90. gotoExit;
  91. }
  92. hr=pIDBProperties->QueryInterface(IID_ISSCECompact,(void**)&pISSCECompact);
  93. if(FAILED(hr))
  94. {
  95. dwErr=GetLastError();
  96. bRet=FALSE;
  97. gotoExit;
  98. }
  99. bDelRet=DeleteFile(CUP_DB_TEMP);
  100. SysFreeString(dbprop[0].vValue.bstrVal);
  101. dbprop[0].vValue.bstrVal=SysAllocString(CUP_DB_TEMP);
  102. if(NULL==dbprop[0].vValue.bstrVal)
  103. {
  104. hr=E_OUTOFMEMORY;
  105. dwErr=GetLastError();
  106. bRet=FALSE;
  107. gotoExit;
  108. }
  109. hr=pISSCECompact->Compact(1,dbpropset);
  110. if(FAILED(hr))
  111. {
  112. dwErr=GetLastError();
  113. bRet=FALSE;
  114. gotoExit;
  115. }
  116. bDelRet=CopyFile(CUP_DB_TEMP,CUP_DB_FILE,FALSE);
  117. if(bDelRet)
  118. {
  119. bDelRet=DeleteFile(CUP_DB_TEMP);
  120. }
  121. Exit:
  122. VariantClear(&dbprop[0].vValue);
  123. if(NULL!=pISSCECompact)
  124. {
  125. pISSCECompact->Release();
  126. }
  127. if(NULL!=pIDBSchemaRowset)
  128. {
  129. pIDBSchemaRowset->Release();
  130. }
  131. if(NULL!=pIDBCreateSession)
  132. {
  133. pIDBCreateSession->Release();
  134. }
  135. if(NULL!=pIDBProperties)
  136. {
  137. pIDBProperties->Release();
  138. }
  139. returnbRet;
  140. }
  141. //初始化系统数据库
  142. BOOLCDBManage::InitDB()
  143. {
  144. BOOLbRet=TRUE;
  145. //关闭记录
  146. CloseRecordset();
  147. //用户表
  148. bRet&=InitUserTable();
  149. //参数表
  150. bRet&=InitParamTable();
  151. //APL表
  152. bRet&=InitAPLTable();
  153. //价格表
  154. bRet&=InitPriceTable();
  155. //传输表
  156. bRet&=InitTransTable();
  157. //更新表
  158. bRet&=InitUpdateTable();
  159. returnbRet;
  160. }
  161. //初始化用户表
  162. BOOLCDBManage::InitUserTable()//ok
  163. {
  164. BOOLbRet=TRUE;
  165. //删除用户表
  166. CStringcsSql=_T("DROPTableUserTb");
  167. ExecuteSQL(csSql);
  168. //新建用户表
  169. csSql=_T("CREATETABLEUserTb(uidnvarchar(6)PRIMARYKEY,pwdnvarchar(6)NOTNULL,privilegenchar(1)NOTNULL);");
  170. bRet&=ExecuteSQL(csSql);
  171. //CStringcsPwd=CMd5::Encrypt(_T("1234"));
  172. //csSql.Format(_T("INSERTINTOUserTb(uid,pwd,privilege)VALUES('1234','%s','1');"),csPwd);
  173. //如果需要加密采取以上的方法(:~
  174. //添加普通用户Cashier(1234/1234/1)
  175. csSql=_T("INSERTINTOUserTb(uid,pwd,privilege)VALUES('1234','1234','1');");
  176. bRet&=ExecuteSQL(csSql);
  177. //csPwd=CMd5::Encrypt(_T("123456"));
  178. //csSql.Format(_T("INSERTINTOUserTb(uid,pwd,privilege)VALUES(123456,'%s',2);"),csPwd);
  179. //如果需要加密采取以上的方法(:~
  180. //添加主管操作员Admin(123456/123456/2)
  181. csSql=_T("INSERTINTOUserTb(uid,pwd,privilege)VALUES('123456','123456','2');");
  182. bRet&=ExecuteSQL(csSql);
  183. returnbRet;
  184. }
  185. BOOLCDBManage::InitParamTable()//ok
  186. {
  187. BOOLbRet=TRUE;
  188. //删除Param表
  189. CStringcsSql=_T("DROPTableParamTb");
  190. ExecuteSQL(csSql);
  191. //新建APL表
  192. csSql=_T("CREATETABLEParamTb(pidsmallintPRIMARYKEY,pnamenvarchar(30),pvaluenvarchar(40));");
  193. bRet&=ExecuteSQL(csSql);
  194. returnbRet;
  195. }
  196. BOOLCDBManage::InitAPLTable()//ok
  197. {
  198. BOOLbRet=TRUE;
  199. //删除APL表
  200. CStringcsSql=_T("DROPTableAPLTb");
  201. ExecuteSQL(csSql);
  202. //新建APL表
  203. csSql=_T("CREATETABLEAPLTb(upcnvarchar(17)PRIMARYKEY,descriptionnvarchar(50),categorynchar(2),subcategorynchar(3),punitnvarchar(10),maxpricenchar(6),ptypenchar(2));");
  204. bRet&=ExecuteSQL(csSql);
  205. //--------------------------临时插入测试数据jacky2008-10-18-----------
  206. csSql=_T("INSERTINTOAPLTbVALUES('TestUPC1','JustForTest1','1','1-1','Unit1','40.25','1');");
  207. bRet&=ExecuteSQL(csSql);
  208. csSql=_T("INSERTINTOAPLTbVALUES('TestUPC2','JustForTest2','2','2-1','Unit2','2.01','2');");
  209. bRet&=ExecuteSQL(csSql);
  210. csSql=_T("INSERTINTOAPLTbVALUES('TestUPC3','JustForTest3','3','3-1','Unit3','1.2','1');");
  211. bRet&=ExecuteSQL(csSql);
  212. //---------------------------End插入测试数据--------------------------
  213. returnbRet;
  214. }
  215. BOOLCDBManage::InitPriceTable()//ok
  216. {
  217. BOOLbRet=TRUE;
  218. //删除Price表
  219. CStringcsSql=_T("DROPTablePriceTb");
  220. ExecuteSQL(csSql);
  221. //新建Price表
  222. csSql=_T("CREATETABLEPriceTb(upcnchar(17)PRIMARYKEY,pricenchar(6));");
  223. bRet&=ExecuteSQL(csSql);
  224. //--------------------------临时插入测试数据jacky2008-10-18-----------
  225. //MessageBox(NULL,_T("InitPriceTbData"),_T("OpenRecordset"),MB_OK);
  226. csSql=_T("INSERTINTOPriceTbVALUES('a1b2c3d4','12.34');");
  227. bRet&=ExecuteSQL(csSql);
  228. csSql=_T("INSERTINTOPriceTbVALUES('TestUPC1','34.45');");
  229. bRet&=ExecuteSQL(csSql);
  230. csSql=_T("INSERTINTOPriceTbVALUES('TestUPC2','0.45');");
  231. bRet&=ExecuteSQL(csSql);
  232. //---------------------------End插入测试数据--------------------------
  233. returnbRet;
  234. }
  235. BOOLCDBManage::InitTransTable()//ok
  236. {
  237. BOOLbRet=TRUE;
  238. //删除Trans表
  239. CStringcsSql=_T("DROPTableTransTb");
  240. ExecuteSQL(csSql);
  241. //新建Trans表
  242. csSql=_T("CREATETABLETransTb(traceidnchar(6)PRIMARYKEY,msgtypenchar(4),amountnchar(12),uidnchar(4),transdatenchar(6),transtimenchar(6),aiicodenvarchar(12));");
  243. bRet&=ExecuteSQL(csSql);
  244. //--------------------------临时插入测试数据jacky2008-10-18-----------
  245. csSql=_T("INSERTINTOTransTbVALUES('001','1','10','1234','081018','143302','0810181433');");
  246. bRet&=ExecuteSQL(csSql);
  247. csSql=_T("INSERTINTOTransTbVALUES('002','2','20','1234','061018','143366','0610181433');");
  248. bRet&=ExecuteSQL(csSql);
  249. csSql=_T("INSERTINTOTransTbVALUES('003','3','30','1234','081018','143100','0810181431');");
  250. bRet&=ExecuteSQL(csSql);
  251. ////---------------------------End插入测试数据--------------------------
  252. returnbRet;
  253. }
  254. BOOLCDBManage::InitUpdateTable()//ok
  255. {
  256. BOOLbRet=TRUE;
  257. //删除Update表
  258. CStringcsSql=_T("DROPTableUpdateTb");
  259. ExecuteSQL(csSql);
  260. //新建Update表
  261. csSql=_T("CREATETABLEUpdateTb(tidnchar(2)PRIMARYKEY,tnamenvarchar(20),lupdatenchar(6),luptimenchar(6));");
  262. bRet&=ExecuteSQL(csSql);
  263. returnbRet;
  264. }
  265. BOOLCDBManage::AnalyzeBalance(BIItembiInput,Balance*balOutput)
  266. {
  267. //1根据byCategorybySubCategory
  268. //2==>获得upc
  269. //3==>让后查询APLTb,获取相关信息
  270. CStringcsSQL;
  271. WCHARwcCategory[2];
  272. WCHARwcSubCategory[3];
  273. VARIANTvarUPC;
  274. VARIANTvarUnit;
  275. VARIANTvarDescription;
  276. VariantInit(&varUPC);
  277. VariantInit(&varUnit);
  278. VariantInit(&varDescription);
  279. BOOLbRet=TRUE;
  280. DWORDdwNum;
  281. charTempArray[50];
  282. if(balOutput==NULL)
  283. returnFALSE;
  284. memcpy(TempArray,biInput.byCategory,sizeof(biInput.byCategory));
  285. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  286. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcCategory,dwNum);
  287. memcpy(TempArray,biInput.bySubCategory,sizeof(biInput.bySubCategory));
  288. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  289. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcSubCategory,dwNum);
  290. csSQL.Format(_T("SELECT*FROMAPLTbWHEREcategory='%s'ANDsubcategory='%s';"),wcCategory,wcSubCategory);
  291. MessageBox(NULL,csSQL,_T("OpenRecordset"),MB_OK);
  292. //bRet&=ExecuteSQL(csSQL);
  293. bRet&=OpenRecordset(csSQL);
  294. if(GetRecordCount(csSQL)==0)//无法匹配
  295. {
  296. return(bRet&=FALSE);
  297. }
  298. else
  299. {
  300. MoveFirst();
  301. varUPC=GetCollect(_T("upc"));
  302. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,varUPC.bstrVal,-1,NULL,0,NULL,FALSE);
  303. WideCharToMultiByte(CP_OEMCP,NULL,varUPC.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  304. //strcpy(balOutput->szItemUPC,"hello");
  305. //Errorr????Jacky2008-10-11
  306. //memcpy(balOutput->szItemUPC,"1234",4);
  307. memcpy(balOutput->szItemUPC,TempArray,dwNum);
  308. //for(intiUPC=0;iUPC<(int)dwNum;iUPC++)
  309. //{
  310. //balOutput->szItemUPC[iUPC]=TempArray[iUPC];
  311. //}s
  312. MessageBox(NULL,varUPC.bstrVal,_T("OpenRecordset"),MB_OK);
  313. varUnit=GetCollect(_T("punit"));
  314. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,varUnit.bstrVal,-1,NULL,0,NULL,FALSE);
  315. WideCharToMultiByte(CP_OEMCP,NULL,varUnit.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  316. //memcpy(balOutput->szUnit,TempArray,dwNum);
  317. //strncpy(balOutput->szUnit,TempArray,dwNum);
  318. MessageBox(NULL,varUnit.bstrVal,_T("OpenRecordset"),MB_OK);
  319. varDescription=GetCollect(_T("description"));
  320. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,varDescription.bstrVal,-1,NULL,0,NULL,FALSE);
  321. WideCharToMultiByte(CP_OEMCP,NULL,varDescription.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  322. //memcpy(balOutput->szItemDesc,TempArray,dwNum);
  323. //strncpy(balOutput->szItemDesc,TempArray,dwNum);
  324. MessageBox(NULL,varDescription.bstrVal,_T("OpenRecordset"),MB_OK);
  325. //for(inti=0;i<sizeof(biInput.byBenefitQuantity);i++)
  326. //{
  327. //balOutput->szBenefitQuantity[i]=biInput.byBenefitQuantity[i];
  328. //}
  329. //memcpy(balOutput->szBenefitQuantity,biInput.byBenefitQuantity,sizeof(balOutput->szBenefitQuantity));
  330. }
  331. returnbRet;
  332. }
  333. BOOLCDBManage::GetItemFromUPC(CStringcsUPC,ItemList*ilOutput)
  334. {
  335. CStringcsSql;
  336. BOOLbRet=TRUE;
  337. if(csUPC.GetLength()>=17)//UPC长度过长
  338. {
  339. returnFALSE;
  340. }
  341. csSql.Format(_T("SELECT*FROMAPLTb,PriceTbWHEREAPLTB.upc=PriceTb.upcANDAPLTB.upc='%s';"),csUPC);
  342. bRet&=OpenRecordset(csSql);
  343. if(GetRecordCount(csSql)==0)
  344. {
  345. returnFALSE;
  346. }
  347. else
  348. {
  349. //++添加向ItemList保存数据的过程jacky2008-10-20
  350. }
  351. returnbRet;
  352. }
  353. BOOLCDBManage::GetItemFromCategory(CStringcsCategory,CStringcsSubcategory,Balance*balOutput,EndBalance*ebalOutput)
  354. {
  355. BOOLbRet=TRUE;
  356. returnbRet;
  357. }
  358. BOOLCDBManage::SetItemPrice(CStringcsUpc,CStringcsPrice)//测试完毕
  359. {
  360. BOOLbRet=TRUE;
  361. CStringcsSQL;
  362. if((csUpc.GetLength()>17)||(csPrice.GetLength()>6))//字符长度过长
  363. {
  364. returnFALSE;
  365. }
  366. //if()//检查价格格式的合法性??如果有必要的话
  367. //{
  368. //}
  369. //UpdateField
  370. csSQL.Format(_T("UPDATEPriceTbSETprice='%s'WHEREupc='%s';"),csPrice,csUpc);
  371. bRet&=ExecuteSQL(csSQL);
  372. //Makesurethatfieldisupdated,Checkit
  373. csSQL.Format(_T("SELECT*FROMPriceTbWHEREupc='%s'ANDprice='%s';"),csUpc,csPrice);
  374. if(GetRecordCount(csSQL)==0)//Therecorddoesn'texist
  375. {
  376. bRet&=FALSE;
  377. }
  378. returnbRet;
  379. }
  380. BOOLCDBManage::CheckPwdData(CStringcsUid,CStringcsPwd)//测试完毕
  381. {
  382. BOOLbRet=TRUE;
  383. CStringcsSql;
  384. if((csUid.GetLength()>6)||(csPwd.GetLength()>6))//字符长度过长
  385. {
  386. returnFALSE;
  387. }
  388. csSql.Format(_T("SELECTuidFROMUserTbWHEREuid='%s'ANDpwd='%s';"),csUid,csPwd);
  389. //bRet&=ExecuteSQL(csSql);
  390. if(GetRecordCount(csSql)==0)//记录不存在
  391. {
  392. bRet&=FALSE;
  393. }
  394. returnbRet;
  395. }
  396. BOOLCDBManage::CheckParamData(){BOOLbRet=TRUE;returnbRet;}
  397. BOOLCDBManage::CheckCardData(){BOOLbRet=TRUE;returnbRet;}
  398. BOOLCDBManage::CheckResponseCode(){BOOLbRet=TRUE;returnbRet;}
  399. BOOLCDBManage::CheckUPC(){BOOLbRet=TRUE;returnbRet;}
  400. BOOLCDBManage::CheckNSF(){BOOLbRet=TRUE;returnbRet;}
  401. BOOLCDBManage::CheckAmountData(){BOOLbRet=TRUE;returnbRet;}
  402. BOOLCDBManage::CheckCountData(){BOOLbRet=TRUE;returnbRet;}
  403. BOOLCDBManage::GetLastTransData(LastTransaction*ltGet)
  404. {
  405. VARIANTvTraceid;
  406. VARIANTvMsgtype;
  407. VARIANTvAmount;
  408. VARIANTvUid;
  409. VARIANTvTransdate;
  410. VARIANTvTranstime;
  411. VARIANTvAiicode;
  412. VariantInit(&vTraceid);
  413. VariantInit(&vMsgtype);
  414. VariantInit(&vAmount);
  415. VariantInit(&vUid);
  416. VariantInit(&vTransdate);
  417. VariantInit(&vTranstime);
  418. VariantInit(&vAiicode);
  419. BOOLbRet=TRUE;
  420. charTempArray[20];//将Unicode转换为ASCII
  421. LONGlRcdSize;
  422. CStringcsSql=_T("SELECT*FROMTransTb;");
  423. DWORDdwNum;
  424. if(ltGet==NULL)
  425. returnFALSE;
  426. //bRet&=ExecuteSQL(csSql);
  427. //bRet&=MoveFirst();
  428. //MessageBox(NULL,csSql,_T("OpenRecordset"),MB_OK);
  429. bRet&=OpenRecordset(csSql);
  430. if((lRcdSize=GetRecordCount(csSql))==0)//如果当前数据记录为空
  431. {
  432. return(bRet&=FALSE);
  433. }
  434. else
  435. {
  436. MoveFirst();
  437. for(longi=0;i<lRcdSize-1;i++)
  438. /*while(!IsEOF())//移动到最后一条记录*/
  439. {
  440. MoveNext();
  441. }
  442. //vTranstime=GetCollect(_T("transtime"));
  443. //MessageBox(NULL,vTranstime.bstrVal,_T("transtime"),MB_OK);
  444. vTraceid=GetCollect(_T("traceid"));
  445. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vTraceid.bstrVal,-1,NULL,0,NULL,FALSE);//确定转换字节大小
  446. WideCharToMultiByte(CP_OEMCP,NULL,vTraceid.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  447. memcpy(ltGet->TraceNum,TempArray,dwNum);
  448. vMsgtype=GetCollect(_T("msgtype"));
  449. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vMsgtype.bstrVal,-1,NULL,0,NULL,FALSE);
  450. WideCharToMultiByte(CP_OEMCP,NULL,vMsgtype.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  451. memcpy(ltGet->byMsgType,TempArray,dwNum);
  452. vAmount=GetCollect(_T("amount"));
  453. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vAmount.bstrVal,-1,NULL,0,NULL,FALSE);
  454. WideCharToMultiByte(CP_OEMCP,NULL,vAmount.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  455. memcpy(ltGet->byTransAmount,TempArray,dwNum);
  456. vUid=GetCollect(_T("uid"));
  457. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vUid.bstrVal,-1,NULL,0,NULL,FALSE);
  458. WideCharToMultiByte(CP_OEMCP,NULL,vUid.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  459. memcpy(ltGet->byCashierID,TempArray,dwNum);
  460. vTransdate=GetCollect(_T("transdate"));
  461. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vTransdate.bstrVal,-1,NULL,0,NULL,FALSE);
  462. WideCharToMultiByte(CP_OEMCP,NULL,vTransdate.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  463. memcpy(ltGet->byLocalTransDate,TempArray,dwNum);
  464. vTranstime=GetCollect(_T("transtime"));
  465. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vTranstime.bstrVal,-1,NULL,0,NULL,FALSE);
  466. WideCharToMultiByte(CP_OEMCP,NULL,vTranstime.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  467. memcpy(ltGet->byLocalTransTime,TempArray,dwNum);
  468. vAiicode=GetCollect(_T("aiicode"));
  469. dwNum=WideCharToMultiByte(CP_OEMCP,NULL,vAiicode.bstrVal,-1,NULL,0,NULL,FALSE);
  470. WideCharToMultiByte(CP_OEMCP,NULL,vAiicode.bstrVal,-1,TempArray,dwNum,NULL,FALSE);
  471. memcpy(ltGet->byAcquirerCode,TempArray,dwNum);
  472. }
  473. returnbRet;
  474. }
  475. //LastTransactionltExample={"004","4","40","123","08102","11111","08102011111"};
  476. //LastTransactionltExample={"004","4","40","1234","081020","111111","081020111111"};
  477. BOOLCDBManage::SetLastTransData(LastTransactionltSet)//OK,但是LastTransaction初始化并没有达到实际的大小
  478. {
  479. WCHARwcTraceNum[6];
  480. WCHARwcMsgType[4];
  481. WCHARwcTransAmount[12];
  482. WCHARwcCashierID[4];
  483. WCHARwcLTDate[6];
  484. WCHARwcLTTime[6];
  485. WCHARwcAcquirerCode[12];
  486. //CStringstrTraceNum=ltSet.TraceNum;
  487. //CStringstrMsgType=ltSet.byMsgType;
  488. //CStringstrTransAmount=ltSet.byTransAmount;
  489. //CStringstrCashierID=ltSet.byCashierID;
  490. //CStringstrLTDate=ltSet.byLocalTransDate;
  491. //CStringstrLTTime=ltSet.byLocalTransTime;
  492. //CStringstrAcquirerCode=ltSet.byAcquirerCode;
  493. charTempArray[20];
  494. BOOLbRet=TRUE;
  495. CStringcsSQL;
  496. DWORDdwNum;
  497. memcpy(TempArray,ltSet.TraceNum,sizeof(ltSet.TraceNum));
  498. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  499. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcTraceNum,dwNum);
  500. memcpy(TempArray,ltSet.byMsgType,sizeof(ltSet.byMsgType));
  501. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  502. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcMsgType,dwNum);
  503. memcpy(TempArray,ltSet.byTransAmount,sizeof(ltSet.byTransAmount));
  504. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  505. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcTransAmount,dwNum);
  506. memcpy(TempArray,ltSet.byCashierID,sizeof(ltSet.byCashierID));
  507. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  508. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcCashierID,dwNum);
  509. memcpy(TempArray,ltSet.byLocalTransDate,sizeof(ltSet.byLocalTransDate));
  510. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  511. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcLTDate,dwNum);
  512. memcpy(TempArray,ltSet.byLocalTransTime,sizeof(ltSet.byLocalTransTime));
  513. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  514. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcLTTime,dwNum);
  515. memcpy(TempArray,ltSet.byAcquirerCode,sizeof(ltSet.byAcquirerCode));
  516. dwNum=MultiByteToWideChar(CP_ACP,0,TempArray,-1,NULL,0);
  517. MultiByteToWideChar(CP_ACP,0,TempArray,-1,wcAcquirerCode,dwNum);
  518. csSQL.Format(_T("INSERTINTOTransTbVALUES('%s','%s','%s','%s','%s','%s','%s');"),
  519. wcTraceNum,
  520. wcMsgType,
  521. wcTransAmount,
  522. wcCashierID,
  523. wcLTDate,
  524. wcLTTime,
  525. wcAcquirerCode);
  526. bRet&=ExecuteSQL(csSQL);
  527. //查找一下,看是否真的已经插入数据库的表
  528. csSQL.Format(_T("SELECT*FROMTransTbWHEREtraceid='%s';"),wcTraceNum);
  529. if(GetRecordCount(csSQL)==0)//记录不存在
  530. {
  531. bRet&=FALSE;
  532. }
  533. returnbRet;
  534. }

分享到:
评论

相关推荐

    ado.rar_DEMO_donkeyqcb_materialhrs_mysql增删改查_数据库操作demo

    例如,`DBRSD.h` 可能包含了`DBRSD.cpp`的类定义,而`DBManager.h`包含了`DBManager.cpp`的接口声明。 这个DEMO项目对于初学者理解数据库操作原理和实践是非常有价值的,因为它提供了实际的代码示例,涵盖了从连接...

    VC++开发的图书管理系统

    - 数据库连接和操作的类文件(如`DBManager.cpp`, `DBManager.h`) - 用户界面的对话框和窗口类文件(如`AddBookDialog.cpp`, `AddBookDialog.h`) - 业务逻辑处理的函数或类文件(如`BorrowFunction.cpp`, `...

    TYDB:适用于iOS的最简单SQLite管理器

    将DBManager.h导入AppDelegate并在didFinishLaunchingWithOptions中调用以下方法。 [DBManager copyDatabaseIfNeeded ]; 如何使用 建立表格 NSMutableDictionary *data = [[ NSMutableDictionary alloc ] init ]; ...

    sqlite-demo.zip

    - "sqlite3.c"和"sqlite3.h"是SQLite的源代码文件,其中"sqlite3.c"包含了SQLite的核心功能实现,"sqlite3.h"则定义了相关的API接口。 - "main.cpp"可能是整个项目的主程序,它将调用SQLite的API进行数据库操作,...

    Qt5代码慕课信息获取

    3. **DBManager.cpp/h**:这些文件涉及到数据库管理。DBManager可能是一个用于处理数据存储和检索的类,它可能使用QSqlDatabase模块来连接和操作数据库。我们可以在这里实现SQL查询,数据插入、更新和删除等功能。 ...

    c++ mysql 引用包

    例如,可以创建一个DBManager类,包含连接、执行SQL、关闭连接等方法,以及异常处理机制。 总的来说,"c++ mysql 引用包"提供了在C++项目中与MySQL数据库交互的基础,开发者可以通过这些头文件实现对数据库的读写...

    qt 单例模式,模板

    3. **Singleton类**:在提供的描述中提到了`Singleton.h`和`SingletonCallOnce.h`,这是实现单例模式的头文件。通常,单例类包含一个私有的构造函数和一个静态方法,该方法返回单例的实例。这样,用户就不能通过常规...

    Qt开发实战:基于Qt的图书管理系统的实验心得与案例解析

    if (dbManager.addBook(title, author)) { QMessageBox::information(this, "Success", "Book added successfully."); } else { QMessageBox::critical(this, "Error", "Failed to add book."); } } } ``` ##...

    Yii2 RBAC 集成了用户管理模块和自写的权限管理模块,前端页面采用H+框架。-Yii2-Rbac.zip

    2. **Yii2 的RBAC组件**:Yii2内置了`yii\rbac\DbManager`,它使用数据库来存储RBAC数据。这个组件允许动态地创建、分配和管理角色、任务和权限。 3. **创建RBAC结构**:使用`yii\rbac\ManagerInterface`提供的方法...

    实习一远程过程调用中间件及数据访问中间件.pdf

    3. 通过编译IDL文件,生成C语言的头文件和源文件,如`mathservice.h`、`mathservice_s.c`和`mathservice_c.c`。 4. 在服务器端编写实现服务的程序,并将其编译为可执行文件,如`mathservice.exe`。 5. 在客户端编写...

    实习一远程过程调用中间件及数据访问中间件定义.pdf

    首先,使用 mysql-connector-java-5[1].0.8.zip 驱动包,编写 DBmanager 类,访问 mysql 数据库,实现创建表、录入成绩、查询成绩等操作。然后,编写客户端程序,调用服务端提供的数据库操作。 3. 服务器和客户端不...

    iOS sqlite3的使用(増删改查)

    #import &lt;sqlite3.h&gt; ``` 接下来,我们创建一个名为`DBManager`的单例类,用于管理数据库的连接和操作。这个类可以包含以下方法: 1. 初始化数据库: - `+ (void)setupDatabaseWithPath:(NSString *)databasePath...

Global site tag (gtag.js) - Google Analytics