Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
strCon = "driver=mysql odbc 3.51 driver;" & _
"server=server;" & _
"database=scms_erds;" & _
"port=3306;" & _
"uid=erdsuser;" & _
"pwd=erds"
con.Open strCon Set rs = New ADODB.Recordset
sqllogin = "select * from operatorinfo where adminname='" & opername & "'" & " and adminpassword='" & operpass & "'"
rs.Open sqllogin, con, adOpenKeyset, adLockOptimistic
If Not rs.EOF Then
rs.Close
Set rs = Nothing
这样是可以的,不能要操作时总连接啊是在模块里处理吗(连接作为一个全局)
在窗体事件里这样操作
Dim rs As ADODB.Recordset
'添加记录
strsql="select * from table"
set rs=executesql(strsql,msgtext)
rs.addnew
rs!字段1=text1.text
rs!字段2=text2.text
........
rs.update
rs.close
set rs=nothing
'修改记录
strsql="select * from table where id=1"
set rs=executesql(strsql,msgtext)
rs!字段1=text1.text
rs!字段2=text2.text
........
rs.update
rs.close
set rs=nothing将下面的代码放到vb的类模块中
Dim msgtext As String
Dim mrc As ADODB.RecordsetPublic Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
'Dim SQL As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(sql)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute sql
MsgString = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条纪录"
End If
ExecuteSQL_Exit:
Set rst = Nothing
Exit Function
Set cnn = Nothing
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End FunctionPublic Function ConnectString() As String
ConnectString ="driver=mysql odbc 3.51 driver;" & _
"server=server;" & _
"database=scms_erds;" & _
"port=3306;" & _
"uid=erdsuser;" & _
"pwd=erds"
End Function
Dim con As New ADODB.Connection
Public Function getConn() As ADODB.Connection
con.CursorLocation = adUseClient
con.Open "driver=mysql odbc 3.51 driver;" & _
"server=server;" & _
"database=scms_erds;" & _
"port=3306;" & _
"uid=erdsuser;" & _
"pwd=erds"
Set getcon = con
End FunctionPrivate Sub Class_Terminate()
con.Close
Set con = Nothing
End Sub'窗体
Private Sub Command1_Click()
Dim clsConn As New clsConntion
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set con = clsConn.getConn
sqllogin = "select * from operatorinfo where adminname='" & opername & "'" & " and adminpassword='" & operpass & "'"
rs.Open sqllogin, con, adOpenKeyset, adLockOptimistic
If Not rs.EOF Then
rs.Close
Set rs = Nothing
Set clsConn = Nothing
End Sub
If Not rs.EOF Then
rs.Close
Set rs = Nothing
Set clsConn = Nothing//为什么不让con 也nothing 我觉得应该加上set con=nothing,
cuilei197979(风) 你在
Function ExecuteSQL()中关闭rst,conn 程序不报错么?
用到的时候定义一个局部的记录集就行.
退出半关闭连接.=================
学习技巧与源码下载站:
http://www.j2soft.cn/
http://j2soft.008.net/
'类模块
Dim con As New ADODB.Connection
Public Function getConn() As ADODB.Connection
con.CursorLocation = adUseClient
con.Open "driver=mysql odbc 3.51 driver;" & _
"server=server;" & _
"database=scms_erds;" & _
"port=3306;" & _
"uid=erdsuser;" & _
"pwd=erds"
Set getcon = con
End FunctionPrivate Sub Class_Terminate()
con.Close
Set con = Nothing
End Sub
然后在模块中定义这个类的一个实例,弄成全局变量 用的时候再定义一个局部的记录集就行.
程序退出的时候关闭这个全局的类 不知道楼上说的是否是这个意思.
我的EMAIL:[email protected]