也算是一个抛砖引玉的过程,首先在CStkLibWnd中加入方法
int LoadCodetable( CStockContainer &container ); // 读取所有股票的信息 int LoadCodeTableByMarket(CStockContainer& container, DWORD dwMarket);
int CStkLibWnd::LoadCodetable( CStockContainer & container ) { if(!IsOK()) return 0; //上海指数 LoadCodeTableByMarket(container, CStock::marketSHSE); //深圳指数 LoadCodeTableByMarket(container, CStock::marketSZSE); return container.GetSize(); } int CStkLibWnd::LoadCodeTableByMarket(CStockContainer& container, DWORD dwMarket) int ncrow=0; CSPString strSql = ""; CSPString strStockCode = ""; CSPString strMarKet=GetMarket(dwMarket); strSql.Format( "select * from StockList where Market='%s' order by Market,Code",strMarKet); int nRow=0; try { _RecordsetPtr m_pRecordsetT; m_pRecordsetT.CreateInstance(__uuidof(Recordset)); m_pRecordsetT->Open(_variant_t(strSql), m_pCnn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); if(!m_pRecordsetT->adoEOF) { _variant_t var; while(!m_pRecordsetT->adoEOF) { CStockInfo info; var = m_pRecordsetT->GetCollect("Code"); if(var.vt != VT_NULL) { strStockCode=(LPCSTR)_bstr_t(var); info.SetStockCode(dwMarket,strStockCode); } var = m_pRecordsetT->GetCollect("ChineseName"); if(var.vt != VT_NULL) { CSPString sValue=(LPCSTR)_bstr_t(var); info.SetStockName(sValue); } var = m_pRecordsetT->GetCollect("ShortName"); if(var.vt != VT_NULL) { CSPString sValue=(LPCSTR)_bstr_t(var); info.SetStockShortName(sValue); } var = m_pRecordsetT->GetCollect("otherName"); if(var.vt != VT_NULL) { CSPString sValue=(LPCSTR)_bstr_t(var); info.SetStockNameEnu(sValue); } void * pArrayID = NULL; if (info.IsValidStock()) { container.Add(info); } m_pRecordsetT->MoveNext(); } } m_pRecordsetT->Close(); } catch(_com_error e) { return container.GetSize(); } ncrow = container.GetSize(); return container.GetSize(); }
打开 StkLib项目中Database.cpp 找到函数LoadCodetable( CStockContainer & container )
函数里面加入
int nSize = 0; int nSize2 = 0; if(AfxGetCStkLibWnd().IsOK()) { nSize2 = AfxGetCStkLibWnd().LoadCodetable(container); if(nSize2>0) return nSize2; }
确保首先执行。
看看调试的结果.
成功能了。