大家给看看,我这样连数据库有什么问题?

madwang1 2003-02-03 01:49:42
郁闷中:

我想用文件dsn连接数据库,首先在一个模块中写了一个数据库连接函数。
Public Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "FileDSN=studentinfo.dsn;UID=sa;PWD="
End Function
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'executes SQL and returns 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
'rst.MoveLast 'get RecordCount
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
然后在窗体模块中调用它

我的material.dsn是这样的:通过sqlserver生成的
[ODBC]
DRIVER=SQL Server
UID=sa
Regional=Yes
StatsLogFile=D:\materialManage\STATS.LOG
StatsLog_On=Yes
QueryLogFile=D:\materialManage\QUERY.LOG
QueryLog_On=Yes
DATABASE=material_Manage
WSID=WANGJING
APP=Microsoft Open Database Connectivity
SERVER=(local)
Description=material file data source

但是在连接是连不上,总体是出错,各位给看看有什么问题
或者介绍一种实用的连接方法,麻烦详细点,我的水平还不好。
...全文
17 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyhcome2000 2003-02-06
  • 打赏
  • 举报
回复
哥们,你的代码书写习惯很不好,最好改改,我先给你示范了一下。
在说你的问题,你用的是server2000对吧,生成的连接.dsn文件是studentinfo.dsn ,我不知道你那个material.dsn是什么,我都用操作系统\控制面板\管理工具\数据源 下做数据连接,那里面提示的很清楚,也很方便,去试试吧,祝你好运!
zyhcome2000 2003-02-06
  • 打赏
  • 举报
回复
Public Function ConnectString() As String
'returns a DB ConnectString
ConnectString = "FileDSN=studentinfo.dsn;UID=sa;PWD="
End Function

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'executes SQL and returns 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
'rst.MoveLast 'get RecordCount
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
然后在窗体模块中调用它

我的material.dsn是这样的:通过sqlserver生成的
[ODBC]
DRIVER=SQL Server
UID=sa
Regional=Yes
StatsLogFile=D:\materialManage\STATS.LOG
StatsLog_On=Yes
QueryLogFile=D:\materialManage\QUERY.LOG
QueryLog_On=Yes
DATABASE=material_Manage
WSID=WANGJING
APP=Microsoft Open Database Connectivity
SERVER=(local)
Description=material file data source
ksmark 2003-02-06
  • 打赏
  • 举报
回复
呵呵
这位兄弟的代码是来自一本叫做《Visual Basic 6.0 数据库系统开发实例导航>>得吧,而且是人民邮电大学出版社的。我说得对吗?

错误关键处在FileName 后面 把这一句改成
Public Function ConnectString() As String
ConnectString = "FileName=DNS的路径;(一般默认是C:\Program Files\Common Files\ODBC\Data Sources\material.dsn;)"
End Function
这样就OK了。
Best of luck to you!
bodatec 2003-02-06
  • 打赏
  • 举报
回复
老兄,你的代吗是一本书上看的吧。只要将DSN文件的路径写对来就可以了,在ODBC中用‘用户文件’设制生成一个.DSN文件。
skile 2003-02-06
  • 打赏
  • 举报
回复
gz

1,216

社区成员

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

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