zl程序教程

您现在的位置是:首页 >  其他

当前栏目

VBA与数据库——写个类操作ADO_事物

2023-03-15 22:04:03 时间

事务是数据库非常重要的一个东西,像我这种非计算机专业的外行人,单从事务这个名字上看,可能根本不明白是什么意思,只有多次用过之后才能理解!

可以这样来理解:就像打开一个Excel文件,对这个文件的许多单元格都进行了输入操作、又增加了Sheet、又设置了各种格式等等。这个时候,稍微熟悉Excel的都应该知道,如果点击关闭文件,Excel会提示是否保存,点击不保存按钮,文件仍然是打开之前的;只有点击了保存按钮,做的那些操作才会真正的保存下来。

这里说到的对Excel进行的各种各样的操作,在数据库里就相当于是对数据库进行了很多步修改操作(像Update、Insert、Delete语句都是修改操作)。

事务就相当于是那个保存的按钮,这些对数据库的修改操作,可以使用事务这个东西来控制要么一次性全部执行操作,要么就回到操作之前的状态。

这么控制有什么用呢?直接百度一下数据库事务,看百度百科的解释就可以了,里面银行转账的例子还是非常好理解的。

具体在VBA里的使用就非常的简单了,直接调用ADO的方法就可以了:

Function Begin() As Long
    AdoConn.BeginTrans
End Function
Function Commit() As Long
    AdoConn.CommitTrans
End Function
Function Rollback() As Long
    AdoConn.RollbackTrans
End Function

测试:

前面很多是用Excel作为数据库来处理的例子,但是前面也说到过,仅仅是把Excel当作数据库来处理,Excel不是真正的数据库,很多数据库的特性是不支持的,其中事务就不能支持:

虽然执行了Rollback,但是insert的数据还是被保存了。

下面看下sqlite数据库:

可以看到,执行了Rollback,insert的数据没有保存到数据库。

执行了Commit,insert的数据才保存到数据库。