请各位大侠指点呀,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
};
...全文
54 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不能访问新添加的记录。

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

不胜感谢!!!!
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

4,011

社区成员

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

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