数据库操作模块化的问题
我在程序中用一个模块函数exeSQL(sql as string) as ADODB.Recordset 来执行sql语句
dim cn as new ADODB.Connection
Public rs As New ADODB.Recordset
窗体加载时:
cn.Open "provider=microsoft.jet.oledb.4.0;data source=F:\登陆器\服务器\Use_pass.mdb", , , -1
程序中:
SQL = "select * from 登陆 where 用户名='" & strUserName & "'"
Set rs = exeSQL(SQL)
If rs.EOF And rs.BOF = True Then '在该句时出错,提示对象关闭操作不允许,rs.state=0
........
问题点数:40、回复次数:8Top
1 楼VichyV(薇姿)回复于 2005-05-14 10:19:26 得分 0
本来简单的数据库连接,为什么要搞得这么复杂,搞不懂Top
2 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 10:51:03 得分 0
因为我在程序中多次用sql调用数据库,反复写同一段代码太累了,并且我想以后再开发数据库时涉及sql语句时我就可以直接将模块拷过来,不用再写了.Top
3 楼VichyV(薇姿)回复于 2005-05-14 11:01:02 得分 40
Function ConnDataBase(sql As String, rs As ADODB.Recordset)
Dim conn As New ADODB.Connection
conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\data\database.mdb"
rs.Open sql, conn, 3, 3
End Function
这样不行吗??Top
4 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:01:04 得分 0
小弟我把这个程序调通了,就是把cn.open也放入exesql()模块函数中!
现在不明白,为什么之前会出现这个错误?
请教高手Top
5 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:06:41 得分 0
维西哥的方法只是用select语句的情况,其它不返回值的情况,比如插入,删除,我做的模块是:
Public Function exeSQL(ByVal SQL As String) As ADODB.Recordset '使用SQL语句查询数据库
On Error GoTo ErrHandler
Debug.Print SQL
Dim rst As New ADODB.Recordset
Dim strArray() As String
Dim cn As New ADODB.Connection
Set rst = New ADODB.Recordset
strArray = Split(Trim(SQL))
cn.Open "provider=microsoft.jet.oledb.4.0;data source=F:\登陆器\服务器\Use_pass.mdb", , , -1
If StrComp(strArray(0), "select", vbTextCompare) = 0 Then
rst.Open SQL, cn, 1, 3
Set exeSQL = rst
Else
cn.Execute SQL
End If
exeSQL_Exit:
Set rs = Nothing
Set cn = Nothing
Exit Function
ErrHandler:
MsgBox "错误号:" & Err.Number & "错误信息:" & Err.Description, vbExclamation
Resume exeSQL_Exit
End Function
Top
6 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:11:20 得分 0
希望大家能多提意见,还有还是那个错误不知道怎么产生的,原来错误的程序中cn.open不在模块里,还有模块函数结束时没有set cn=nothing,模块中的cn都用的是form1.cn,小弟求教了Top
7 楼therockdelt(Dm和弦)回复于 2005-05-14 15:12:16 得分 0
路过 来看看Top
8 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 18:50:32 得分 0
如果没有什么意见的话,3天后结贴,欢迎高手进来,指点小弟的程序,能做出一个完善的VB数据库操作的模块Top




