`

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. }

分享到:
评论

相关推荐

    DBManager.java

    DBManager.java

    DBManager.exe

    数据库操作工具,针对多种弄数据库进行操作。查看各种数据。

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

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

    C#基础全接触

    { //创建指向具体处理函数的代表实例(新建一个代表,让它指向具体的处理函数) DBManager.EmnuConnectionCallback myCallback = new DBManager.EmnuConnectionCallback(ActiveConncetionCallback);...

    Java简单模拟ATM机项目

    DbManager.class mysql-connector-java-5.1.18-bin.jar db mysql_bank.sql sqlserver_bank.sql lib mysql-connector-java-5.1.18-bin.jar MANIFEST.MF pics a11.jpg a12.jpg a13.jpg a16.jpg a18.jpg ...

    WP-DBManager2.50 简体中文包插件 for WordPress.zip

    WP-DBManager2.50 简体中文包插件 插件使用方法: 1.上传到插件目录,在WordPress控制面板激活插件。 2.插件激活之后,会在wp-content目录生成一个backup-db的目录,目录的默认需要的权限是:777。   ...

    java dbmanager

    java dbmanager

    Java简单模拟ATM机

    java语言编写的简单模拟ATM机功能案例,有美观的UI界面,和比较完善的功能模块,业务分层,编码格式规范。可供初学者参考。 另在db文件夹中附带两种数据库(mysql、sqlserver)表结构。... DbManager.java Thumbs.db

    sqlite数据库操作工具类(含jsqlite.jar包)

    sqlite数据库操作工具类(含jsqlite.jar包),DBManager.java工具类可复制到项目中直接使用

    数衡电子秤传秤软件(电子秤管理系统).rar

    数衡电子秤传称软件主程序:DBManager.exe本软件采用“多线程技术”实现与数衡电子秤通讯,够实现对数衡全系列联网电子秤的集中管理,提供商品管理、网络测试、预设键、标设计、店名及文本、用户及权限等一系列管理...

    数据库备份插件WP-DBManager

    WP-DBManager插件介绍: WP-DBManager是wordpress的数据备份插件,目前最新版本为2.40,其主要用途是对WordPress 的数据库进行管理,从而省去了用户必须使用类似PhpMyadmin登录数据库进行备份、修复、导入等操作,...

    Android代码-android

    android write some code about android some tools about android 1 DBManager.java help you to manage the SQLiteDatabase of sqlLite , support multithreaded access.

    jsp所做点卡销售系统

    环境:myeclipse,sqlserver 2005,tomcat,里面附带的jar包是08数据库所用,可以换掉,DBManager.jar中可以修改数据库密码

    用jsp做的简单blog(博客)

    是用myEclipse开发的,tomcat服务器,sqlServer2005数据库,里面jar包是08数据库的,可以换掉,DBManager.java中可以修改数据库密码

    DbManager:用于新系统的数据库Maganer-开源

    该软件实现了一个数据库内容管理器系统,该系统适用于使用ORM框架系统FRESHHH https://sourceforge.net/p/hierarnodesys/的mysql数据库。... 演示:https://freshhh-dbmanager.sourceforge.io/sample/

    C3P0连接池管理类

    C3P0 数据库连接池 管理类 驱动包 只要在DBManager.java内加上自己的oracle地址和用户名密码即可,如果是用别的数据库,则把相应的数据库连接地址改改就成

    飘云论坛系统 1.0.rar

    飘云论坛系统功能比较简单,实现了用户注册...适合初学者使用。注意:开发环境为Visual Studio 2008,数据库为SQL Server 2008用户名密码是:admin数据库连接文件:master.master.cs、login.aspx、App_Code/DbManager.cs

    DBManager Professional 3.4.6

    DBManager Professional 3.4.6,专业版,功能比免费版强大很多,虽然只有20天试用,但使用比较少,影响不大

Global site tag (gtag.js) - Google Analytics