首页 新闻 会员 周边 捐助

一个很狗血的问题,VC利用ADO调用数据库传递字符串参数的问题,问题已经找到,请高手帮忙分析下原因,

0
悬赏园豆:5 [已解决问题] 解决于 2010-09-02 13:28

void Preprocess::WriteTotalArff(int DFthreshold,bool isbagOfWordsExist)
{
  char *dbfield="CAbstract";
 FUNCSEG seg=&Preprocess::goodWordsinPieceArticle;
  ConstructMap(mymap,dbfield,seg);
 
 cout<<"arff文件已经形成"<<endl;
 
 
 string temp(infoFromWekaAddress);

 cout<<"请您将使用weka聚类,并保存为"<<temp<<endl;
}

那么在constructMap中:

int Preprocess::ConstructMap(map<string,vector<pair<int,int>>>&mymap,char *dbfiled,FUNCSEG seg)
{

CoInitialize(NULL);
 _ConnectionPtr pConn(__uuidof(Connection));
 _RecordsetPtr pRst(__uuidof(Recordset));
 pConn->ConnectionString=dbconnection;
 pConn->Open("","","",adConnectUnspecified);
 pRst=pConn->Execute(dbselect,NULL,adCmdText);
 while(!pRst->rsEOF)
 {   string rawtext=(_bstr_t)pRst->GetCollect(dbfield); 这句话会出问题

}

则不报错,但是运行时候,会出问题,转到系统文件comutil.h的如下位置

inline _variant_t::_variant_t(const char* pSrc)
{
    V_VT(this) = VT_BSTR;
    V_BSTR(this) = _com_util::ConvertStringToBSTR(pSrc);
}

 

但是如果做如下修改:

void WriteTotalArff(char * dbfield,int DFthreshlod,bool isbagOfwordsexsist);

即多给WrtieTotalArff一个参数,然后在主函数中声明:

char *dbfield="CAbstract"

如果做上面的修改则无任何错误,程序正常运行。

 

 

 

}

finallyly的主页 finallyly | 初学一级 | 园豆:100
提问于:2010-09-02 12:41
< >
分享
最佳答案
0

转到文件后,应该会告诉你出错的语句,你可以查看下相关变量的值.

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2010-09-02 12:52
错误我已经找到(已经标出),同样也找到 了修改方案,就后部分,就是很奇怪为什么会出这样的错误,请高手帮忙分析下原因
finallyly | 园豆:100 (初学一级) | 2010-09-02 12:58
@finallyliuyu:它报啥错误?
Launcher | 园豆:45050 (高人七级) | 2010-09-02 13:06
又不报错了,,好奇怪,我也不知道怎么了。这个问题就这么结吧。把分数给你。。
finallyly | 园豆:100 (初学一级) | 2010-09-02 13:28
@finallyliuyu:-_-!
Launcher | 园豆:45050 (高人七级) | 2010-09-02 13:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册