vc数据库的简单问题
一段SQL语句放到一个类里面出错,如果写到事件里却没问题,新手求救
一个CDB类,把数据库操作封装
- C/C++ code
int CDB::AddData(const CString strSQL){ cmd->CommandText=_bstr_t(strSQL); try { cmd->Execute(NULL,NULL,adCmdText); con->CommitTrans(); return 1; } catch (_com_error e) { //CString err; //err.Format(_T("%s")); //AfxMessageBox(err); con->RollbackTrans(); return -1; }} //在一个窗体里调用却出错 CDB db; int i; i=db.AddData(_T("INSERT INTO DevType VALUES (832,'743','44faderfa')")); if (i==1) { AfxMessageBox(_T("success")); } else { AfxMessageBox(_T("failure")); }这样出错
- C/C++ code
_CommandPtr cmd; cmd.CreateInstance("adodb.command"); cmd->ActiveConnection=theApp.con; cmd->CommandText=_bstr_t("INSERT INTO DevType VALUES (823,'232','232')"); cmd->Execute(NULL,NULL,adCmdText);SQL语句没错,字段也对应,数据库连接成功,不存在主键冲突问题
[解决办法]
你这个CDB类是不是有构造函数,是不是构造函数里有初始化的变量.比如需要初始化OLE等
[解决办法]
你单步执行,看db这个变量是否有效,如果有效,就跟踪到AddData函数里,看是哪句有问题
另个,AfxOleInit();这条语句在类时里的初始化里加,不要在try里加,如果一定要在try里加,最好延时几毫秒,已有人发现这个问题了,好象是初始化OLD需要点时间