VC通过缓存查询ACCSEE数据库 我会用VC查询ACCSEE数据库,但这次项目主管要求先通过ADO从MyData.mdb数据库读取产品表Product的数据,保存在缓存ProdCache里,然后根据指定条件(例如ProdName或ProdDate)从缓存ProdCache里查询满足条件的产品数据。请坛中高手帮忙解决一下,不胜感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没听说过ACCESS缓存。SQLSERVER有临时表的概念。我理解项目主管的意思就是把数据存在另外一个具体表里面,这个具体表可能是按月形成,按日形成,或者定时刷新。这样就不用每次查询都要检索几个大数据量的相关表,提高速度。 你可以把从access中取出来的数据放到内存等中都可以...以后就是在内存中读取数据,效率要高点 的确是为了提高速度,这个缓存可以看成是内存中的表,表结构为struct ProdStruct{ long ProdID; // 产品ID CString Model; // 产品型号 CString ProdName; // 产品名称 CString ProdDate; // 生产日期 CString ProdArea; // 产地}; struct ProdStruct { long ProdID; // 产品ID CString Model; // 产品型号 CString ProdName; // 产品名称 CString ProdDate; // 生产日期 CString ProdArea; // 产地 };std::vector<ProdStruct *> g_prods;void Init(){ ... }void Clear(){ ... }void InsertProd(ProdStruct *){ ... }void DeleteProd(ProdStruct *){ ... }class SelectCommand{public: void Execute(std::vector<ProdStruct *>&ret, std::vector<ProdStruct *>&total) {} int valtype; // 1 by 产品ID, 2 by 产品型号, 3 by 产品名称, 4 by 生产日期, 5 by 产地 int comptype; // 等于,不等于,大于,小于 _variant_t val; //输入的条件} 谢谢a_rockboy!其实查询条件只要求1 by 产品ID, 2 by 产品型号, 3 by 产品名称, 4 by 生产日期, 5 by 产地就行了。要怎样将数据库的内容,读入Cacha中,能再指点一下吗(最好给出大致的程序)? void Init(){ _ConnectionPtr conn; conn.CreateInstance(_T("ADODB.Connection")); conn->Open(...); _RecordsetPtr rs = conn->Execute(_T("select * from ...", NULL, adCmdText); while(rs->Eof) { ProdStruct * aProd = new ProdStruct; aProd->ProdID = (long)rs->Fields->Items[(short)0]->Value; // 产品ID //下面省略了判断字符串为NULL的情况 aProd->Model = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)1]->Value; // 产品型号 aProd->ProdName = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)2]->Value; // 产品名称 aProd->ProdDate = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)3]->Value; // 生产日期 aProd->ProdArea = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)4]->Value; // 产地 g_prods.push_back(aProd); rs->MoveNext(); }}大体上就是这样,我这没有开发环境。 再次感谢a_rockboy!问题基本上解决了。 使用CxImage实现png图片透明度 自己写了一个ARP欺骗程序欺骗网关,但是还能上网 如何给group box加上滚动条? 关于CscrollView 如何获得CView对象? 求解!关于SDK的一个问题?急!!! 怎么让exe 变小? Visual C++ 用英文怎样读? 谁有400*300的欢迎画面,高清晰的,动态算法图形也行! ("在线等待")--注册表下的组件线程模型值什么时候会被访问到? 请问各位大侠 用vc6.0怎样实现矩形橡皮框并使橡皮框任意角度旋转啊 我用了CRectTracker类画了一个但是不知道怎么旋转啊 急死了 跪求 谢谢 MFC上传视频到YouTube
struct ProdStruct
{
long ProdID; // 产品ID
CString Model; // 产品型号
CString ProdName; // 产品名称
CString ProdDate; // 生产日期
CString ProdArea; // 产地
};
{
long ProdID; // 产品ID
CString Model; // 产品型号
CString ProdName; // 产品名称
CString ProdDate; // 生产日期
CString ProdArea; // 产地
};std::vector<ProdStruct *> g_prods;void Init()
{ ... }void Clear()
{ ... }void InsertProd(ProdStruct *)
{ ... }void DeleteProd(ProdStruct *)
{ ... }class SelectCommand
{
public:
void Execute(std::vector<ProdStruct *>&ret, std::vector<ProdStruct *>&total)
{} int valtype; // 1 by 产品ID, 2 by 产品型号, 3 by 产品名称, 4 by 生产日期, 5 by 产地
int comptype; // 等于,不等于,大于,小于
_variant_t val; //输入的条件
}
其实查询条件只要求1 by 产品ID, 2 by 产品型号, 3 by 产品名称, 4 by 生产日期, 5 by 产地就行了。
要怎样将数据库的内容,读入Cacha中,能再指点一下吗(最好给出大致的程序)?
void Init()
{
_ConnectionPtr conn;
conn.CreateInstance(_T("ADODB.Connection"));
conn->Open(...); _RecordsetPtr rs = conn->Execute(_T("select * from ...", NULL, adCmdText);
while(rs->Eof)
{
ProdStruct * aProd = new ProdStruct;
aProd->ProdID = (long)rs->Fields->Items[(short)0]->Value; // 产品ID
//下面省略了判断字符串为NULL的情况
aProd->Model = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)1]->Value; // 产品型号
aProd->ProdName = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)2]->Value; // 产品名称
aProd->ProdDate = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)3]->Value; // 生产日期
aProd->ProdArea = (LPCTSTR)(_bstr_t)rs->Fields->Items[(short)4]->Value; // 产地 g_prods.push_back(aProd); rs->MoveNext();
}
}大体上就是这样,我这没有开发环境。