sqlca.sqlcode返回值为-1,提示更新失败。??但表却更新成功为何?

jxskyinfoi 2002-03-13 04:40:14
我的代码是这样的:数据库用MS SQL 2000
sqlca.autocommit=true
insert into ......
commit sqlca;
if sqlca.sqlcode<>0 then
messagebox("","更新失败!")
else
messagebox("",更新成功!")
end if
结果:sqlca.sqlcode返回值为-1,提示更新失败。??但表却更新成功为何?但表确实更新了。
...全文
45 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feixuepiaopiao 2002-03-13
SQLCA 已经提交就不需要再连接
而且不能用COMMIT SQLCA来对SQLCA。SQLCODE 进行判断
回复
zhanwei 2002-03-13
当:sqlca.autocommit=true 时
PowerBuilder issues SQL statements outside the scope of a transaction. The statements are not part of a logical unit of work (LUW). If the SQL statement is successful, the DBMS updates the database immediately as if a COMMIT statement had been issued?
当:sqlca.autocommit=false 时
(Default) PowerBuilder issues SQL statements inside the scope of a transaction. PowerBuilder issues a BEGIN TRANSACTION statement at the start of the connection and issues another BEGIN TRANSACTION statement after each COMMIT or ROLLBACK statement is issued
因此:
sqlca.autocommit=true
insert into ......

//commit sqlca; 去掉即可

if sqlca.sqlcode<>0 then
messagebox("","更新失败!")
else
messagebox("",更新成功!")
end if
回复
sincerity 2002-03-13
为什么要设成 AutoCommit?
这里的 SQLCA.SQLCode 取得的并不是 Insert 语句的执行结果。
insert into ......
if sqlca.sqlcode<>0 then
messagebox("","更新失败!")
else
messagebox("",更新成功!")
commit sqlca;
end if
回复
Leehunter 2002-03-13
首先设置
sqlca.autocommit=false
然后
insert into ....
if sqlca.sqlcode=0 then
commit;
else
rollback;
end if
你的返回值返回了commit的执行状态。由于autocommit设置为true了,可能会=-1。
回复
发帖
非技术版
创建于2007-09-28

379

社区成员

PowerBuilder 非技术版
申请成为版主
帖子事件
创建了帖子
2002-03-13 04:40
社区公告
暂无公告