我用:
Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
cn.open' 打开数据库连接
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub
请问,如何判断与服务器连接是否成功,而避免应用程序长时间连接服务器而出现“未相应”的情况
Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
cn.open' 打开数据库连接
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub
请问,如何判断与服务器连接是否成功,而避免应用程序长时间连接服务器而出现“未相应”的情况
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
cn.open' 打开数据库连接
在这里添加错误故障处理
简单来说,这一步只存在打开与打不开的问题
on error then exit sub rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub
'你的数据库操作语句
.
.
.
.
Errhandler:
select case err.number
case XXX
'捕捉错误
cass 0
'没有错误
end select
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串,对不起有点手误cn.open不要
cn.open' 打开数据库连接
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub现在修如下:Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr ="Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
cn.open cnstr' 打开数据库连接
if cn.State=AdStateOpen then
msgbox "数据库连接成功!!!"
else
msbox "数据库连接失败!!!"
exit sub
end if
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub
修改如下:
Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
On Error GoTo Show_ErrMsg'错误捕足
cnstr ="Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
cn.ConnectionTimeout =20'设置超时时间
cn.open cnstr' 打开数据库连接
if cn.State=AdStateOpen then
msgbox "数据库连接成功!!!"
else
msbox "数据库连接失败!!!"
exit sub
end if
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
exit sub
Show_ErrMsg:
MsgBox "数据库连接错误:" & Err.Description, 16, "错误"
Unload me
Exit Sub
End Sub
高手我正用崇拜的眼光看着你
:)
......
exit sub
ErrorHandle:
msgbox err.Description就可以了如果连接不上自动会返回错误的至于连接等待时间是可以设置的.
conn.Open , , , adAsyncConnect '该语句不会等带连接
chkstate.Show VbModal
conn是定义在模块内的Public对象;
chkstate是检查连接状态的窗体,上面有一个定时器控件,用于检测连接状态。可在定时器控件内加入代码:
On Error Goto ErrorHandler:
if conn.State = adStateOpen Then Unload Me
Exit Sub
ErrorHandler:
Msgbox "连接数据库失败!"
并且可以在该窗体上加一个进度条或者动画。。呵呵,反正我是这么做的