注册 登录
编程论坛 VB6论坛

连接数据库用相对路径,怎么弄?

greenpop 发布于 2018-05-26 21:37, 3525 次点击
各位老师,代码如下:
'版本号
Public Const VerNum As String = "版本 1.0"
'生成日期
Public Const GenDate As String = "日期 2005-11-25"
'定义数据库连接字符串
'Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CRM.mdb;"    '设置连接字符串ConnectionString属性
'Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\vb\vbstudy\源码01  客户资源管理系统\CRM.mdb;"    '设置连接字符串ConnectionString属性
Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "crm.mdb"  '设置连接字符串ConnectionString属性"
 
 
 '一次执行connect操作可以访问数据库的次数
Public Const CONNECT_LOOP_MAX = 10

5 回复
#2
风吹过b2018-05-26 22:47
App.Path & "crm.mdb"

你先要知道 app.path 返回什么
如果你工程在 D:\vb\vbstudy\源码01\ 这个目录,
那么 app.path 返回 D:\vb\vbstudy\源码01,再加上你的 crm.mdb ,得到的数据库路径是: D:\vb\vbstudy\源码01crm.mdb
很明显,结果是错误的。

一般来说,app.path 返回工程的所在目录,不包括最后的 \ 符号,但有一种情况例外,那就是在根目录下时包括这个符号。
所以,你这里要根据情况自己补上这个 \ 符号了。

有二种选择,一种使用 IIF 函数,不需要大改你的代码。
一种是使用 IF 命令,要么增加一个变量,要么重复写一句代码。

你自己选择吧。
#3
wds12018-05-27 09:20
Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\crm.mdb"  '设置连接字符串ConnectionString属性"
 
#4
ZHRXJR2018-05-27 11:07
Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\vb\vbstudy\源码01  客户资源管理系统\CRM.mdb;"
这个语句是绝对路径,返回值是:D:\vb\vbstudy\源码01  客户资源管理系统\CRM.mdb
Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "crm.mdb"
这个语句是相对路径,返回值是:D:\vb\vbstudy\源码01  客户资源管理系统CRM.mdb,看出来与上面的区别了吗?
因此应该修改为:
Public Const Conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\crm.mdb"
这个语句是相对路径,返回值是:D:\vb\vbstudy\源码01  客户资源管理系统\CRM.mdb,这才是正确的。
#5
greenpop2018-05-27 12:14
如果按各位老师指导的,运行时,"path"加黑印,然后显示"编译错误,要求常数表达式".
#6
ZHRXJR2018-05-27 17:55
greenpop
好像你这样设置有问题吧?
Public Const Conn As String 是设置一个常量,所谓常量,conn 肯定是一个字符串,那么后面就不应该有变量,而 App.Path 是系统检测的相对目录,可以认为是变量。

在VB中,conn 是对象,是连接数据库的对象,不是常量!应该这样才对:
Dim conn As New ADODB.Connection, RS As New ADODB.Recordset   '设置 conn 数据库连接对象与 RS 记录集对象

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\crm.mdb"   'conn连接数据库的字符串
conn.Open    '打开conn对象连接到数据库

当然在VB中还有很多方法可以连接数据库,以上是利用VB的ADO对象连接数据库的。
1