请各位大侠指点呀,Ado+vc 出问题

kv2002 2003-10-15 11:56:39
我用vc+ado做小练习!出了警告信息,而且程序不能运行!
程序大致如下:


BOOL AdoTextDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
AfxOleInit();
m_connection.CreateInstance(__uuidof(Connection));

try
{
m_connection->Open("Provider=Microsoft.Jet.OLEDB.3.5.1;Data Source=Student1.mdb","","",adModeUnknown);///连接数据库
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void AdoTextDlg::OnOK()
{
// TODO: Add extra validation here
_variant_t vId,vName;
m_list.ResetContent();


m_recordset.CreateInstance(__uuidof(Recordset));
try
{
m_recordset->Open("select * from Student1",_variant_t((IDispatch *)m_connection,true),
adOpenStatic,adLockOptimistic,
adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
while(!m_recordset->adoEOF)
{
vId=m_recordset->GetCollect("stuid");
vName=m_recordset->GetCollect("stuname");
if(vId.vt!=NULL&&vName.vt!=NULL)
{
m_list.AddString((char*)_bstr_t(vName));
}
m_recordset->MoveNext();
}
if(m_reconnection->State) m_connection->Close();
m_recordset->Close();
m_recordset=NULL;
CDialog::OnOK();
}



初始化我也作了,智能指针我也定义了,警告信息如下:
warning C4146: unary minus operator applied to unsigned type, result still unsigned
双击时出现如下信息:
enum RecordCreateOptionsEnum
{
adCreateCollection = 8192,
adCreateStructDoc = -2147483648,
adCreateNonCollection = 0,
adOpenIfExists = 33554432,
adCreateOverwrite = 67108864,
adFailIfNotExists = -1
};
...全文
55 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigercctv 2003-10-18
  • 打赏
  • 举报
回复
多谢大家了, doogle(扬立) AkiraChing(水银) kv2002(d)
Viconia() ,有了各位的帮忙,小弟对vc更有信心了。给分揭贴了。
AkiraChing 2003-10-17
  • 打赏
  • 举报
回复
wangjin1818(对爱陌生)的问题是
addnew以后要update
AkiraChing 2003-10-17
  • 打赏
  • 举报
回复
楼主的问题,
1,警告是ado的bug,可以这样消除,在import语句下面加一句
#pragma warning (disable: 4146)
2,AfxOleInit();最好在CXXApp::InitInstance()中调用。
3,m_connection->Open("Provider=Microsoft.Jet.OLEDB.3.5.1;Data Source=Student1.mdb","","",adModeUnknown);
Microsoft.Jet.OLEDB.3.5.1要改成Microsoft.Jet.OLEDB.4.0
4,if(m_reconnection->State) m_connection->Close();
m_recordset->Close();
m_recordset=NULL;
改成
m_recordset->Close();
if(m_connection->State==adStateOpen)
m_connection->Close();
看看还会不会出错
doogle 2003-10-17
  • 打赏
  • 举报
回复
Provider=Microsoft.OLEDB.3.5.1 应该改成Provider=Microsoft.OLEDB.3.51
或者Provider=Microsoft.OLEDB.4.0,前者是针对Access97,而后者则是针对
Access2000的(应该也支持97)。
kv2002 2003-10-16
  • 打赏
  • 举报
回复
enum RecordCreateOptionsEnum
{
adCreateCollection = 8192,
->> adCreateStructDoc = -2147483648,
adCreateNonCollection = 0,
adOpenIfExists = 33554432,
adCreateOverwrite = 67108864,
adFailIfNotExists = -1
};

spwnihao 2003-10-16
  • 打赏
  • 举报
回复
你单步跟踪一下,看看问题到底出在哪里?
kv2002 2003-10-16
  • 打赏
  • 举报
回复
多谢斑竹和viconia的指点,我修改了程序,但是出现了Unknown error 0x800a0E7A的警告信息。
说我的 Test.exe abnormal program termination. 不正常终止。
我仅仅是在xxxView 中
AdoTextDlg dlg;
dlg.DoModal();
这是怎么回事啊,大家继续给援援手啊。
kv2002 2003-10-16
  • 打赏
  • 举报
回复
代号:lovevcmfc 密码:12345
Viconia 2003-10-16
  • 打赏
  • 举报
回复
用ADO的程序都会有那个警告
kv2002 2003-10-16
  • 打赏
  • 举报
回复
唉,谁让咱是菜鸟呢!只好不知耻了.
我把程序放在邮箱里了,请大侠给看看啊.跪请!!
lovevc.student@sina.com
密码:12345
spwnihao 2003-10-16
  • 打赏
  • 举报
回复
出现警告信息是正常的(好像这个警告不能去掉,我的程序中也有这个警告),但程序不能运行就不对了,我大致看一下,
if(m_reconnection->State) m_connection->Close();
m_recordset->Close();
m_recordset=NULL;
这样是不对的,因为结果集m_recordset是通过连接m_connection打开的,你不能先关闭连接在关闭结果集,正确的是
m_recordset->Close();
m_recordset=NULL;
if(m_reconnection->State)
{
m_connection->Close();
m_connection = NULL;
}
wangjin1818 2003-10-16
  • 打赏
  • 举报
回复
哦,各位看起来很不错。 我也想错贵地问一个小问题,也是ADO与VC的问题, 我用ADO来添加记录时老是出错,也是出现非正常终止的情况。ADO的RecordSet的打开方式与第一楼的差不多,只不过CourseType为adOpenDynamtic, 但使用与recordSet绑定的IAdoRecordBinding* m_piADORecordBinding->AddNew(...)后,不能移就不能移动到记录集的末尾。
大致的程序段如下:
{。。。
IRecordSet* m_pRs;
IADORecordBinding* m_piADORecordBinding;
.....


m_piADORecordBinding->AddNew(...);
m_pRs->MoveLast();
...
}
整个程序的编译链接都没有问题,就是在执行到,m_pRs->MoveLast(); 时,出现错误??通过跟踪后发现,m_pRs不能访问新添加的记录。

请问如何解决,是什么原因引起的。

不胜感谢!!!!

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧