数据库连接的问题,菜鸟级的!

2101zwj 2004-08-27 09:31:50
Public Function executesql(ByValSQL As String, megstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() 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
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function


Public Function connectstring() As String
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
End Function


Public Function test(txt As String) As Boolean
If Trim(txt) = "" Then
testtxt = False
Else
testtxt = True
End If
End Function

好象是数据库连接的问题。
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
是不是这句写得不对!数据库是access,没设用户和密码!
...全文
162 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2004-08-30
  • 打赏
  • 举报
回复
如果是数据源,连接代码:
cnn.Open "数据源名称","用户","密码"
2101zwj 2004-08-30
  • 打赏
  • 举报
回复
我刚才照上面说的那样,去掉错误处理。发现它的报错是:
实时错误 ’-214767259 (80004005)
常见错误: 无效的文件 dsn 'manage'

好象是数据源的错误,但是我重新配置了一个,发现还是这样的问题。我用vb
的 vb数据窗口向导 做窗体的时候,发现不能识别access数据库,所以只要用
odbc去连接,发现根据向导做成的窗体的功能还是正常的,这样是不是说明

manage 这个数据源没有问题?但是错误提示为什么又是上面那样的呢?
RUKYO 2004-08-30
  • 打赏
  • 举报
回复
你程序中有三处BUG:
1、ByValSQL 应该是 ByVal SQL

2、megstring 应该是 msgstring

3、UCase 应该是 LCase
hedengdeng 2004-08-29
  • 打赏
  • 举报
回复
可能要将Accesss数据库转换成早期版本的Access数据库
RUKYO 2004-08-29
  • 打赏
  • 举报
回复
有错误3处:
1、ByValSQL 应该是 ByVal SQL

2、megstring 应该是 msgstring

3、UCase 应该是 LCase
RUKYO 2004-08-29
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim mrst As New ADODB.Recordset
Dim mReturnMsg As String
mReturnMsg = ""
Set mrst = executesql("select * from Table1", mReturnMsg)
MsgBox "影响字段数" & mrst.Fields.Count & " " & mReturnMsg
Set mrst = Nothing
End Sub


Public 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
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open connectstring
If InStr("insert,delete,update", LCase$(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
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function


Public Function connectstring() As String
connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
End Function

Private Sub Command2_Click()
Dim mrst As New ADODB.Recordset
Dim mReturnMsg As String
mReturnMsg = ""
Call executesql("delete from Table1 where Field1 = '" & "ABCD'", mReturnMsg)
MsgBox mReturnMsg
Set mrst = Nothing
End Sub
SKer 2004-08-29
  • 打赏
  • 举报
回复
1 连接sql
If cn.State = adStateClosed Then
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=wq_yjr;Data Source=wangqiaosoft"
cn.Open
End If
2 连接网络sql
If Conn.State = adStateClosed Then
Conn.ConnectionString = "Provider=SQLOLEDB.1;Password=wqsoft;Persist Security Info=True;User ID=oft;Initial Catalog=soft;Data Source=222.190.7.12"
Conn.Open
End If

3 连接access

If cn.State = adStateClosed Then
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
"" & App.Path & "\yjr.mdb;Persist Security Info=False"
cn.Open
End If
sunde2004 2004-08-29
  • 打赏
  • 举报
回复
你写得也有些太麻烦了。
连接ACCESS,也要这么多语句吗?
vbman2003 2004-08-29
  • 打赏
  • 举报
回复
不要:Public Function connectstring() As String
直接:
Public Function executesql(ByValSQL As String, megstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\db1.mdb;" & _
"Persist Security Info=False"
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
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function
2101zwj 2004-08-29
  • 打赏
  • 举报
回复
sos!
jone999 2004-08-27
  • 打赏
  • 举报
回复
cnnDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & GetPath & "\gl.mdb" & _
";Persist Security Info=False"
huangjianyou 2004-08-27
  • 打赏
  • 举报
回复
连接字符串:
http://www.connectionstrings.com/

^_^
zdmaster 2004-08-27
  • 打赏
  • 举报
回复
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=admin;pwd="
storm_xu 2004-08-27
  • 打赏
  • 举报
回复
去掉错误处理,断点跟踪看看到底报的什么错误
2101zwj 2004-08-27
  • 打赏
  • 举报
回复
还是不对啊,我认为还是数据库打开有问题!
数据库连接怎么这么麻烦啊!
谁愿意帮我弄明白着,愿意独加50分(重新追加)以示感谢!

我跟踪了一下程序,老是跑到错误标号executesql_error:那个地方去了,所以我认为数据库连接有问题!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧