我使用vb连接sqlserver,连接函数如下:Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set mycon = New ADODB.Connection
'On Error GoTo err
mycon.ConnectionString = connstring
mycon.CursorLocation = adUseClient
mycon.CommandTimeout = 5
mycon.Open'    Exit Function
'    err.Clear
Dim stokens() As String
'On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
      mycon.Execute sql
Else
  Set rst = New ADODB.Recordset
  rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
 Set ExecuteSQL = rst
End IfEnd FunctionPublic Function connstring(serverip) As String
connstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=e;Initial Catalog=tt;Data Source=(local)"
End Function调用的时候使用
............
txtsql1 = "select * from person where username='ixcw'"
    Set mrc = ExecuteSQL(txtsql1, serverip)    If mrc.EOF = False Then
        sss = MsgBox("存在!")
    Else
        sss = MsgBox("不存在!")
    End If
..............
当提供的sqlserver信息正确时,没有问题,但当sql权限有误时就会出现错误,提示sql不存在或连接错误,点确定后,程序就关闭了,想知道如何加上检查sql是否连接成功的代码,并正确中止查询事件,多谢!

解决方案 »

  1.   

    不知道“sql权限有误”是什麽意思。。你所说的可能是
    mycon.CommandTimeout = 5  ‘单位毫秒
    引起的,,将 5 改为 600 试试。。还有。
    If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
    上句中的“"INSER,”少个字母“T”。。
      

  2.   

    应该启用'On Error GoTo err 进行错误捕获,当sql连不上或者语句出错时,都会在
     Err.Description 中返回错误信息,在此错误信息中,可以看出错误的原因