大家晾凉自己怎么判断远程数据库是否连上的方法!既然是大讨论,那咱们就把VB家族的几个兄弟都讨论了吧!
1.VB6.0里怎么判断SQL是否连上。
2.VBA里怎么判断SQL是否连上。
3.VBS里怎么判断SQL是否连上。
好了,有没有高招就看大家了!
谁的方法最好,分就给谁吧...
vb6.0、vba、vbs分别选个最佳的!欢迎大家踊跃发言
1.VB6.0里怎么判断SQL是否连上。
2.VBA里怎么判断SQL是否连上。
3.VBS里怎么判断SQL是否连上。
好了,有没有高招就看大家了!
谁的方法最好,分就给谁吧...
vb6.0、vba、vbs分别选个最佳的!欢迎大家踊跃发言
解决方案 »
- 如何自动创建序号
- VB中的透明绘图
- 各位大侠多多指教!!
- 如何才能让下拉框可以多选?(就是每一项前面有个勾选框)
- 有关于一个线程的问题(VB.net)?高手请指教
- VB6--访问Access2000数据库时出现“找不到可安装的ISAM”的方案总结,感谢各位指导!
- 请教高人,一个类名为AIGrid的网格控件,如果通过API取得其单元格的值,给思路即给分!
- 求教:使用winsock通信时,都会弹出一个Http1.1 200 OK 的对话框,每次通信时都要单击确定很烦人,如何屏蔽这个对话框呢
- 有湖南长沙的朋友进来看下!!!
- 关于弹出式菜单?
- 为什么这样做是错的呢?请各位帮帮忙
- vb问题,怎么能点一个按钮,才能执行一段程序?
'如果连接标记为真,表明数据库已连接,则直接返回。
If IsConnect = True Then
Exit Sub
End If
Set cnn = New ADODB.Connection
'设置连接字符串的ConnectionString属性
cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库;Data Source=."
cnn.Open
'判断连接的状态
If cnn.State <> adStateOpen Then
'如果连接不成功,则显示提示信息,退出程序
MsgBox "数据库连接失败", vbOKOnly + vbCritical, "连接失败"
End
End If
'设置连接标记,表示已经连接到数据库
IsConnect = True
End Sub
State 属性
对所有适用的对象,指示该对象状态是打开的还是关闭的。指示对所有可应用的对象执行异步方法,指示对象的当前状态是正在连接、正在执行还是正在检索。返回值
返回可能是 ObjectStateEnum 值的 Long 值。默认值为 adStateClosed。说明
可以随时用 State 属性确定给定对象的当前状态。对象的 State 属性可以是值的组合。例如,如果正在执行某个语句,此属性将有一个 adStateOpen 和 adStateExecuting 的组合值。State 属性为只读。请参阅
Visual Basic 范例 | Visual C++ 范例 | Visual J++ 范例适用于:Command 对象 | Connection 对象 | Record 对象 | Recordset 对象 | Stream 对象
本范例演示使用 ConnectionString 属性打开 Connection 对象的不同方式。范例中还使用 ConnectionTimeout 属性来设置连接超时的时间段,并使用 State 属性来检查连接的状态。运行此过程需要 GetState 函数。'BeginConnectionStringVB 'To integrate this code replace
'the database, DSN or Data Source values
Public Sub Main()
On Error GoTo ErrorHandler Dim Cnxn1 As ADODB.Connection
Dim Cnxn2 As ADODB.Connection
Dim Cnxn3 As ADODB.Connection
Dim Cnxn4 As ADODB.Connection
' Open a connection without using a Data Source Name (DSN)
Set Cnxn1 = New ADODB.Connection
Cnxn1.ConnectionString = "Provider='sqloledb';Data Source='MySqlServer';" & _
"Initial Catalog='Pubs';Integrated Security='SSPI';"
Cnxn1.Open
MsgBox "Cnxn1 state: " & GetState(Cnxn1.State)
' Open a connection using a DSN and ODBC tags
' It is assumed that you have create DSN 'Pubs' with a user name as
' 'MyUserId' and password as 'MyPassword'.
Set Cnxn2 = New ADODB.Connection
Cnxn2.ConnectionString = "Data Source='Pubs';" & _
"User ID='MyUserId';Password='MyPassword';"
Cnxn2.ConnectionTimeout = 30
Cnxn2.Open
MsgBox "Cnxn2 state: " & GetState(Cnxn2.State)
' Open a connection using a DSN and OLE DB tags
' It is assumed that you have create DSN 'Pubs1' with windows authentication.
Set Cnxn3 = New ADODB.Connection
Cnxn3.ConnectionString = "Data Source='Pubs1';"
Cnxn3.Open
MsgBox "Cnxn2 state: " & GetState(Cnxn3.State)
' Open a connection using a DSN and individual
' arguments instead of a connection string
' It is assumed that you have create DSN 'Pubs' with a user name as
' 'MyUserId' and password as 'MyPassword'.
Set Cnxn4 = New ADODB.Connection
Cnxn4.Open "Pubs", "MyUserId", "MyPassword"
MsgBox "Cnxn4 state: " & GetState(Cnxn4.State)
' clean up
Cnxn1.Close
Cnxn2.Close
Cnxn3.Close
Cnxn4.Close
Set Cnxn1 = Nothing
Set Cnxn2 = Nothing
Set Cnxn3 = Nothing
Set Cnxn4 = Nothing
Exit Sub
ErrorHandler:
' clean up
If Not Cnxn1 Is Nothing Then
If Cnxn1.State = adStateOpen Then Cnxn1.Close
End If
Set Cnxn1 = Nothing
If Not Cnxn2 Is Nothing Then
If Cnxn2.State = adStateOpen Then Cnxn2.Close
End If
Set Cnxn2 = Nothing
If Not Cnxn3 Is Nothing Then
If Cnxn3.State = adStateOpen Then Cnxn3.Close
End If
Set Cnxn3 = Nothing
If Not Cnxn4 Is Nothing Then
If Cnxn4.State = adStateOpen Then Cnxn4.Close
End If
Set Cnxn4 = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End SubPublic Function GetState(intState As Integer) As String Select Case intState
Case adStateClosed
GetState = "adStateClosed"
Case adStateOpen
GetState = "adStateOpen"
End SelectEnd Function
'EndConnectionStringVB
DBSETLUSER(login,UserName);
DBSETLPWD(login,Password);
DBSETLAPP(login,app_name);需要用到 #define DBNTWIN32
#include <windows.h>
#include <sqlfront.h>
#include <sqldb.h> 我主要考虑的是 是不是用vc打包个api就是了....理论上说ado就是从这里封装的....
If Cn.State <> adodb.ObjectStateEnum.adStateClosed Then Cn.Close
Cn.Open
连接成功以后还是定时向服务器执行一个连接测试用的小存储过程(比如 select 1=1),执行失败则断开了.
dim withevents cn as adodb.connection
ConnectComplete 和 Disconnect事件。没试过。
使用普通的方法,都会弹出SQL错误信息框,这个很不友好,谁有没有不弹这个框的方法?就是说所有的操作都在代码里判断...再等几天期待高手了...
Set cn = New ADODB.Connection
cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb;
If cn.State = adStateOpen Then
MsgBox "连接成功!"
Else
MsgBox "连接失败!"
End If
1、先Ping(模块,CSDN上有共享)一下数据库的IP地址,如果通则执行第2步;不通则直接报连接不成功,这 比SQL数据库的反馈要快很多!
2、连接数据库,捕捉SQL反馈的错误代码<>0则提示连接失败
3、用Timer定时检测连接,打开一个只有一条记录的表,能打开则说明数据库连接OK,不通则转到 错误捕捉,提示相应的信息
Option ExplicitPrivate Sub Form_Load() Dim WS '不要Dim WS As Object,因为VBS不支持除变体Variant以外的数据类型 Set WS = CreateObject("mswinsock.winsock") '不要Dim WS As New winsock,还是照顾VBS^_^ With WS
.RemoteHost = "192.168.1.188" '你要测试连接的远程IP
.RemotePort = 80 '选个常用的端口哦^_^,比如 21、80、135、137、138、139、445、1025、1394、2475、3127、6129、3389、593
End With WS.Connect '空循环,不能写winsock的连接事件,用这个最合适啦!
Do While WS.State = 6
DoEvents
Loop
'State数据类型
'Integer 'State 属性的设置值是:
'常数 值 描述
'sckClosed 0 缺省的。关闭
'sckOpen 1 打开
'sckListening 2 侦听
'sckConnectionPending 3 连接挂起
'sckResolvingHost 4 识别主机
'sckHostResolved 5 已识别主机
'sckConnecting 6 正在连接
'sckConnected 7 已连接
'sckClosing 8 同级人员正在关闭连接
'sckError 9 错误 If WS.State = 7 Then
'连上的操作
Else
'其他情况即没连上该做的
End IfEnd Sub
我给个VB6.0+VBA+VBS通用的方法!(见上贴)
'空循环,不能写winsock的连接事件,用这个最合适啦!
Do While WS.State = 6
DoEvents
Loop切不可忘掉DoEvents,否则主线程就睡觉去了...
空循环变成了死循环了