VC不能更新SQL2000数据库!!!!急得睡不着觉!!!

socools 2003-10-20 05:47:55
我工程原来数据库是Access,最近转到SQL2000,仍沿用原有的DAO访问方式,使用DSN的ODBC连接SQL2000,读取没有问题,但不能更新,DAO数据集的CanUpdate()返回0值。我仔细检查过权限(我用sa帐户做试验,密码肯定没问题),不会是身份验证的问题。数据库结构是由Access直接转到SQL2000的,没有变化。强制执行Delete()或Edit(),返回“记录集为只读”信息。我没有加任何readonly参数限制,均以默认值方式打开数据库和数据集。请教各位高手,什么原因会导致此种情况?我新建了一个MFC工程,使用向导连接同样的数据库和表(没有使用DAO),就能够更新数据库,因此应该不是数据库或ODBC驱动的问题。但将此新工程转到DAO就又不能更新了。若将原来的工程转到不使用DAO,也不能更新,郁闷死了……我是没辙了,请各位不吝赐教,谢谢!Server:Win2K+SQL2K+SP3a;Client:WINXP。
...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
socools 2003-10-21
  • 打赏
  • 举报
回复
多谢各位的支持,关于得到记录条数的问题已解决。
今天我又新建了一个使用ODBC的工程,发现若使用SnapShot集就可以更新记录,若改为Dynaset就不行,一字之差就会引起这样的结果对吗?
若新建工程使用DAO方法,无论snapshot或dynaset都不能更新,难道是微软的bug?
因为我原来的的工程使用DAO方法,很大,若改用ADO,工作量是不是很大,能否告知主要步骤,谢谢!
jkljf 2003-10-21
  • 打赏
  • 举报
回复
你可以不可以使用ado呢?getrecordcount一般不能返回记录数, 除非你遍历过所有纪录
sony19791015 2003-10-21
  • 打赏
  • 举报
回复
建议使用ADO
hanwg 2003-10-20
  • 打赏
  • 举报
回复
同意楼上
smallsix 2003-10-20
  • 打赏
  • 举报
回复
GetRecordCount() 只得到遍历过的记录 要得到全部 必须把全部都遍历一遍

使用 SELECT count(*) from table 吧
Richuen22 2003-10-20
  • 打赏
  • 举报
回复
不要用SQL原来的master或Norther数据例子库,自己新建一个如Student
stonexl 2003-10-20
  • 打赏
  • 举报
回复
直接调用GetRecordCount返回的就是0或1,要得到实际的记录数,应遍滤数据库。
Open后,
int i = 0;
while(pRecordSet->IsEof() == 0)
{
i ++; //循环结束后,i就是实际的记录数
pRecordSet->MoveNext();
}

此时再使用GetRecordCount才能得到实际的记录数
socools 2003-10-20
  • 打赏
  • 举报
回复
还有一个问题就是在任何情况下直接调用GetRecordCount都会只返回1,而我得数据库中有很多条记录,这是什么原因?

4,011

社区成员

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

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