事务处理是由以一个单一的逻辑单位完成的一系列操作,它可以由一系列的sql语句、SELECT、INSERT、UPDATE、DELETE组成,如果在该单位包含的操作执行完毕后没有发生错误,那么它对数据库所作的改变就是永久的了。如果一旦有错误发生,它就不会对数据库作任何修改或改变。
要定义一个事务,需要使用Begin tran命令,在这一命令之后的任何语句都将被认为是事务的一部分。命令Commit用来完成事务,并使事务对数据库所作的修改成为永久的。Rollback命令用来取消一个事务,并还原事务对数据库所作的修改。
下面是一个sql事务的例子:
[sql SERVER7.0 or sql SERVER2000]
BEGIN TRAN
INSERT INTO PRODUCT(PRODUCTID,PRODUCTNAME) VALUES("0001","KEYBOARD")
IF (@ERROR>0) ROLLBACK
UPDATE PRODUCT SET PRICE=12 WHERE PRODUCTID= "0002"
IF (@ERROR>0) ROLLBACK
COMMIT
RETURN
ERRH:
ROLLBACK
我们多数会将交易写在STORED PROCEDURE中,但是如果出现DATAGRID中的多数据更新,就需要用到.NET中的这个System.Data.sqlClient.sqlTransaction和Try...Catch...Finally...End Try来处理异常!下列代码是VB.NET 中 sqlTransaction 的使用 Dim connectionString As String = "server=localhost;database=web;uid=sa;pwd=" Dim conn As System.Data.sqlClient.sqlConnection = New System.Data.sqlClient.sqlConnection(connectionString) Dim cmd() As System.Data.sqlClient.sqlCommand Dim trans As System.Data.sqlClient.sqlTransaction Dim i As Integer,k As Integer Dim sql() As String k = 2 sql(0) = "update ..." sql(1) = "update ..." sql(2) = "update ..." trans = conn.BeginTransaction() For i = 0 To k cmd(i) = New System.Data.sqlClient.sqlCommand(sql(i),conn) cmd(i).Transaction = trans Next Try For i = 0 To k cmd(i).ExecuteNonQuery() Next trans.Commit() Catch Ex As sqlException trans.Rollback() Finally conn.Close() End Try