请问关于:prepare 和DataModule1.Database1.StartTransaction在应用上的区别(100分)

A

allow

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ms sql server 我看一位前辈作的软件,他在updata/insert 用DataModule1.Database1.StartTransaction
select用DisableControls和EnableControls

可是我看书上说select 应该用prepare,
请问他们的区别,希望能说的详细一点,谢谢。
 
事务可以看作是不可分割的操作集合,集合中的操作要么全部完成,要么全部取消。一个
简单的例子是银行之间的转帐,从银行A 提款然后到银行B 存款,这两个操作如果有一个在操
作期间出现错误,就必须取消另外一个,而不管它是否成功。全部执行或者全部取消,是事务
的基本特征。
每个事务在运行期间分配一个私有缓冲区,当进行事务处理时,在缓冲区中进行。当事务
结束时,如果该事务所涉及的数据都能提交到数据库,更新就可以进行,否则在事务期间所作
的变化全部夭折。
如果要处理整体性操作,可以把它们放在事务中。D e l p h i 的事务处理过程相当简单,只要
调用D a t a b a s e 组件的方法:
S t a r t Tr a n s a c t i o n // 开始一个新的事务
C o m m i t // 向数据库服务器提交更新
R o l l b a c k // 取消事务期间作的改变,把数据库恢复到事务前状态
D a t a b a s e 组件的Tr a n s I s o l a t i o n 指定了作用于同一个表的事务的隔离程度,可以取下列值:
· tiDirtyRead 可以看到其他事务还没有提交的对数据库的修改。
· tiReadCommitted 只能看到其他事务已经提交的修改。
· tiRepeatableRead 在事务期间,数据的修改彼此不可见。
有些数据库服务器可能不支持所有的隔离模式。如果不支持每个模式,B D E 将使用数据库
服务器支持的下一个最高模式。I n t e r B a s e 不支持t i D i r t y R e a d 模式,指定t i D i r t y R e a d 时,实际上
使用t i R e a d C o m m i t t e d 模式。
事务处理的一般模式为:
. . .
D a t a b a s e 1 . S t a r t Tr a n s a c t i o n ;
t r y
ApplyUpdates; // 修改数据
D atabase1.Commit; // 提交数据
e x c e p t
Database1.Rollback; // 如果提交失败,回滚数据库
raise;
e n d ;
 
对了,他们根本没什么关系嘛

通过检查P r e p a r e d 的属性值来确定是否准备好查询。
如果P r e p a r e d 属性值为Tr u e ,说明已
经准备好查询;反之,说明没有准备好。设置P r e p a r e d
属性值为Tr u e 与调用P r e p a r e 方法的效果
是一样的,设置P r e p a r e d 属性值为F a l s e 与调用
U n P r e p a r e 方法的效果是一样的,在程序运行时
调用P r e p a r e 方法和U n P r e p a r e 方法会自动地更
新P r e p a r e d 的属性值。
 
谢谢,你的解释,我还想问:
我在做数据库编程时应该注意些什么呢?
您回复后我马上给分
 
其实数据库编程并不难,但我觉得需要经验,你应先找些有关数据库的源码
看看,然后试着做,遇到不会的地方可到这里问。水平很快会提高的,关键是
要自己动手!
 
谢谢,我现在是一个人在做,感觉很多东西都靠自己琢磨。进步很慢。

你可以看看我的另一个问题!
 
顶部