请问关于在vb中用ado引用access的问题!

tianye22 2002-09-01 01:32:33
我上次在vb里用ado引用sql server成功了!谢谢打家的帮助!
当时问题主要是在这个函数中的connectsring中,还有就是对odbc数据源的设定!
Public Function ConnectString() _
As String
'返回一个数据库连接
ConnectString = "PROVIDER=SQLOLEDB.6;Persist Security Info=True;User ID=sa;Password=8122;Initial Catalog=Student;Data Source=TIANYE;Connect Timeout=15"
End Function

现在我想用我做的同一个vb程序来引用access的数据库!既一个mdb文件!
我把这个函数改为:
Public Function ConnectString() _
As String
'返回一个数据库连接
ConnectString = "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\stu1.mdb"
End Function
为什么这样不行呢!?到底要怎么样改才可以呢!?需要配置odbc数据源吗!?
请高手赐教谢谢!!!!
...全文
120 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianye22 2002-09-14
  • 打赏
  • 举报
回复
help!help !helP!!!!
tianye22 2002-09-14
  • 打赏
  • 举报
回复
Help!
tianye22 2002-09-14
  • 打赏
  • 举报
回复
还是不行,我就是这样的!到底怎么回事呢!为什么SQL Sever 2000,就可以呢!还是没有连接上数据库文件mdb啊!!!!
smx717616 2002-09-13
  • 打赏
  • 举报
回复
连接Access 要引用ADO 2.5 or 2.6
在用
dim sql_cn as string
Dim cn As ADODB.Connection
sql_cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=路径;Persist Security Info=False"
Set cn = New ADODB.Connection
cn.Open sql_cn
应该没有任何问题吧
tianye22 2002-09-13
  • 打赏
  • 举报
回复
这里真的没有高手了吗!?哎!!!
tianye22 2002-09-11
  • 打赏
  • 举报
回复
还是不行啊!难道没有高手了吗!万分火急啊!是做课程设计用的!!!谢谢!!!!
tianye22 2002-09-11
  • 打赏
  • 举报
回复
请高手回答,谢谢!!!
cdsy_go 2002-09-05
  • 打赏
  • 举报
回复
你写这么长,
还是先连好了数据库再写好些
你要先应用ADO对象,然后在作其他的事情
conn.connectionstring="provider=microsoft.jet.oledb.4.0 data source="+datapath
dtapath是你的数据库的路径,没有密码的就是这样
chenyu5188 2002-09-04
  • 打赏
  • 举报
回复
你安装VB补丁SP5
tianye22 2002-09-04
  • 打赏
  • 举报
回复
请高手解答谢谢!!!!!!
tianye22 2002-09-04
  • 打赏
  • 举报
回复
就是没有连接到数据库!数据库没打开!
tianye22 2002-09-02
  • 打赏
  • 举报
回复
怎么先建好连接呢!?我的整个模块是这样的!
Public cnn As ADODB.Connection
Public fMainForm As frmMain
Public UserName As String
Sub Main()
Dim fLogin As New frmLogin
fLogin.Show vbModal
'显示登陆窗体
'判断是否授权用户
If Not fLogin.OK Then
'Login Failed so exit app
End
End If
Unload fLogin

'判断是否进入系统
Set fMainForm = New frmMain
fMainForm.Show
End Sub
Public Function ConnectString() _
As String
'返回一个数据库连接
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Password ="";Data Source=C:\stu1.mdb;Persist Security Info=True"
End Function
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'传递参数SQL传递查询语句,MsgString传递查询信息
Dim cnn As ADODB.Connection
'定义连接
Dim rst As ADODB.Recordset
'定义字符串
Dim sTokens() As String
'错误处理
On Error GoTo ExecuteSQL_Error
'用split函数产生一个包含各个子串的数组
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

请高手赐教!请麻烦说清楚点!我很菜的!谢谢!!!!

Azi03 2002-09-02
  • 打赏
  • 举报
回复
而且,你的数据库连接用完以后需要关闭:cnn.close()
而不是简单的Set cnn = Nothing
Azi03 2002-09-02
  • 打赏
  • 举报
回复
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then

你的Instr函数使用错误,改成:
if InStr("INSERT",UCase$(sTokens(0))) or InStr("DELETE",UCase$(sTokens(0))) or InStr("UPDATE",UCase$(sTokens(0))) then
Azi03 2002-09-02
  • 打赏
  • 举报
回复
你可不可以把你的出错提示写出来,或者你的出错现象,如何个不行法??
palmkey 2002-09-02
  • 打赏
  • 举报
回复
Public Function ConnectString() As String

ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\stu1.mdb;Persist Security Info=False"

End Function
tianye22 2002-09-02
  • 打赏
  • 举报
回复
不会吧!我这个模块连接SQL Server2000时都完全没有问题!
只是这个函数不一样!
Public Function ConnectString() _
As String
'返回一个数据库连接
ConnectString = "PROVIDER=SQLOLEDB.6;Persist Security Info=True;User ID=sa;Password=8122;Initial Catalog=Student;Data Source=TIANYE;Connect Timeout=15"
End Function
现在我想连接一个access2000的mdb文件,里面的表的内容和sql server里的
都完全一样!我的mdb文件也没有设密码!请问高手要怎么样改这个函数呢!?我把它改成:
Public Function ConnectString() _
As String
'返回一个数据库连接
ConnectString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\stu1.mdb"
End Function
还是不行!请问是不是还要加些什么东西!谢谢!请赐教!!!!!
I_Love_IT! 2002-09-01
  • 打赏
  • 举报
回复
你如果要得到最正确的connection string,建议使用ADODC或DATAENVIRONMENT,建好连接后,用msgbox显示一下其connectionstring属性。
我觉得用DATAENVIRONMENT很好,不用定义connection、recordset和connectionstring,代码看起来很干净。
守城小轩 2002-09-01
  • 打赏
  • 举报
回复
password 是你的数据库的密码.
如果你是用的是access2000做的数据库 并设置了访问密码:
只许在password="密码" 即可
zhangyilan 2002-09-01
  • 打赏
  • 举报
回复
参考一下VC的连接串
ODBC Driver for Access

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
"Dbq=c:\\DatabasePath\\dbaccess.mdb;Uid=;Pwd=;");

If you are using a Workgroup (System database):
You need to inform the SystemDB Path, the User Name and its password.
For that You have Two solutions: Inform the user and password in the conecction string or in the moment of the open operation.
For Example:

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
"Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"
"SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;"
"Uid=Carlos Antollini;Pwd=carlos");

or may be strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
"Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"
"SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;");
if(pDB.Open(strConnection, "DatabaseUser", "DatabasePass"))
{
DoSomething();
pDB.Close();
}

If you want to open in Exclusive mode:

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
"Dbq=c:\\DatabasePath\dbaccess.mdb;Exclusive=1;");

加载更多回复(4)

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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