VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 870|回复: 5

VC中使用数据库的UpData函数提示未能更新怎么办?哪位帮帮忙

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-18 18:40:02 | 显示全部楼层 |阅读模式
m_pSCSet->Requery();
while(!m_pSCSet->IsEOF())
{
        if((m_pSCSet->m_grade<=69) && (m_pSCSet->m_grade>=60))
        {
                m_pSCSet->m_grade += 5;
                m_pSCSet->Update();
                m_pSCSet->MoveNext();
        }
}
题目是找出表中的分数在60—69之间的元组,将分数加5分,但我用上面的代码提示更新的企图失败
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-27 20:45:01 | 显示全部楼层
直接用sql语句写
回复

使用道具 举报

0

主题

28

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-8-27 21:00:01 | 显示全部楼层
看看你打开的记录集的游标是什么类型,静态的游标和只读锁,是不可以更新的
如果只是更新,建议采用 1楼的方法
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-8-27 21:15:01 | 显示全部楼层
[Quote=引用楼主 继续跟随教主 的帖子:]
m_pSCSet-> Requery();
while(!m_pSCSet-> IsEOF())
{
if((m_pSCSet-> m_grade <=69)   &&   (m_pSCSet-> m_grade> =60))
{
m_pSCSet-> m_grade   +=   5;
m_pSCSet-> Update();
m_pSCSet-> MoveNext();
}
}
题目是找出表中的分数在60—69之间的元组,将分数加5分,但我用上面的代码提示更新的企图失败
[/Quote]

直接用SQL

update tb
set fenshu = fenshu + 5
where fenshu between 60 and 69

也可以这样.
declare @sql as varchar(100)
set @sql = 'update tb set fenshu = fenshu + 5 where fenshu between 60 and 69'
exec(@sql)

可以把这个SQL语句放进你vc的变量中,然后动态执行.
不过,VC里面应该不是用exec,而是用他自己的东西了.
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-8-27 21:30:01 | 显示全部楼层
1.如你代码的要求..只需要用SQl进行更新即可
2.注意你打开的Ado.Recordset的游标,看是否为只读
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-8-27 21:45:01 | 显示全部楼层
CursorType 游标类型
LockType   锁定类型

另,如果确实有需要做成在程序中批量SQL更新,可以用开放式批更新模式....不过如题要求不需要,太浪费
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表