Private Sub Command1_Click()
On Error GoTo eHDim Conn As New ADODB.Connection
Dim BeginTransBol As Boolean  '是否已开始一个 ado 事务
Dim ConnStr As String
Dim cSql As StringBeginTransBol = False
ConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True; Initial Catalog=[数据库名];Data Source=[服务器名]; User ID=sa;Password=;"  '基于用户名和密码的访问
'ConnStr = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=[数据库名];Data Source=[服务器名]; Integrated Security=SSPI;" '基于 windows 集成的安全访问
'ConnStr = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + [Access97、Access2000 数据库路径及名称] + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + [数据库密码]  '访问 Access 数据库
With adoCnn
     If .State = adStateOpen Then .Close
    .ConnectionString = ConnStr
    .Open
     If .State = adStateOpen Then     '数据库打开成功
     '开始一个事物,设置事务的隔离层为 adXactReadCommitted       .IsolationLevel = adXactReadUncommitted  'adXactReadCommitted
       .BeginTrans  '开始一个事务
        BeginTransBol = True
        
        cSql = "DELETE * FROM [表]"        '此时并未真正删除,直到 CommitTrans 提交当前事务或者回滚事务才是真正的删除       .Execute cSql, , adCmdText + adExecuteNoRecords        '参数 adExecuteNoRecords 表示不返回任何记录集,可提高执行速度        .CommitTrans  '提交当前事务
        BeginTransBol = False
    Else         '数据库打开失败
         '...    End If
    
End With
Exit Sub
eH:
   If adoCnn.State = adStateOpen And BeginTransBol Then adoCnn.RollbackTrans  '有错误发生,回滚当前事务
   MsgBox Err.Description + "(错误号:" + CStr(Err.Number) + ")", vbCritical, "出错拉 . . ."End Sub

解决方案 »

  1.   

    看上面的程序我的问题,这个程序有问题吗?这个程序可以连接到我的数据库,并能以最快的速度帮我删除我想要删除的记录吗?另外,如果我想在Text中显示出我数据库中的记录,是不是可以直接用:
    dim rs as new adodb.recordset
    dim sql as string
    sql="select sum([字段]) as sumrecord from [表] where [字段]=[值]"
    rs.open conn,1,1
    text=sumrecord
      

  2.   

    你的代码应该是最快速度删除记录。能不能成功连接你的数据库,看你是否设置了数据库的用户名和密码等。如果出错要看你的出错信息才知道。要显示你的记录
    dim rs as adodb.recordset
    dim sql as string
    sql="select sum([字段]) as sumrecord from [表] where [字段]=[值]"
    set rs=new adodb.recordset
    rs.open sql,conn, adOpenKeyset, adLockReadOnly, 1
    if not(rs.bof and rs.eof) then text.text=rs("sumrecord").value写代码的风格中最好把默认属性也写出来。
      

  3.   

    我写过一些ASP,VB还是第一次,其它还写过些小JAVA,所以对VB不熟悉,还要请你们指点。rs.open sql,conn, adOpenKeyset, adLockReadOnly, 1
    这句不可以像ASP中一样:rs.open conn,1,1吗?能解释一下这些是干什么的?跟ASP中的区别。
      

  4.   

    还有判断代码if not(rs.bof and rs.eof) then ……
    在VB中一定要吗,如果不要会出错吗?
      

  5.   

    //rs.open sql,conn, adOpenKeyset, adLockReadOnly, 1
    //这句不可以像ASP中一样:rs.open conn,1,1吗可以
      

  6.   

    还有判断代码if not(rs.bof and rs.eof) then ……
    在VB中一定要吗,如果不要会出错吗?就是在asp中也要判断啊。。
      

  7.   

    //还有判断代码if not(rs.bof and rs.eof) then ……
    //在VB中一定要吗,如果不要会出错吗?如果不判断一下直接去读值就会出错的