当前位置: 代码迷 >> PB >> 多个用户连接数据库的有关问题
  详细解决方案

多个用户连接数据库的有关问题

热度:105   发布时间:2016-04-29 09:00:10.0
多个用户连接数据库的问题
用pb8开发的软件,连接ODBC数据源,数据库在sqlserver2000里。请问这样的软件如果真的用起来,可以多少个用户一起连接数据库。我在软件里加了个restart()的菜单项,结果重新启动程序好多次以后就提示cannot connect,这是怎么回事。
还有一个问题,如果一个用户访问数据表的时候,比如select,insert,delete,update,恰好碰到另一个用户正在占用,会不会出问题。软件是否会等待另一个用户commit或者rollback以后继续执行。

------解决方案--------------------
1、sqlserver2000最大连接数是1024个并发的访问数。
cannot connect--把错误提示写上来,用sqlca.sqlerrtext


2、数据表根据不同的数据库会有页级锁和行级锁,当你发出一个对数据表插入、删除、更新操作时,就会对影响的数据所在的页或行进行锁定,其他用户的事务不可以对已锁定的页或行进行更改,只能在后面排队,甚至还会不能读取(避免读脏数据),只有到这个事务在COMMIT或ROLLBACK后才会释放这些锁。鉴于这样,我们在编程的时候就注意对表的操作,不要让锁长时间存在,也就是向数据库提交操作最好在很短的时间内完成。

初学者还会经常犯下面的问题,包括我自己初学也一样,看下面的代码

if dw1.update() = 1 then
messagebox('成功','数据存盘')
commit;
else
messagebox('错误','数据未能存盘')
rollback;
end if

初看没有问题,但在程序发布应用的时候,有时会遇到锁表现象,其他用户检索数据时死机,这种现象不是经常出现,查了一段时间才发现有用户在看到提示后没有再按确定就去做其他事情,结果这个事务一直是挂着,锁没有及时释放,把MESSAGEBOX这部分写在COMMIT ROLLBACK后面就好了。

  相关解决方案