注册表正常注册,可确定是连接数据库的问题,请高手指点
程序如下:
启动数据库
IF Run('dbsrv8 -n '+trim(sle_server.text)+' '+ls_directory+'\cjlr.db -n cjlr') = -1 then
Messagebox("启动数据库", "无法启动数据库。")
ELSE
Messagebox("启动数据库", "数据库是否已经启动,请检查任务栏中是否出现数据库图标。~r~n" &
+ "如果长时间没有出现,请检查数据库引擎程序dbsrv8.exe是否存在。")
END IF
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cjlr;UID=dba;PWD=sql'"
Connect;
cb_ok.default = true
8 个解决方案
#1
在其它电脑上直接运行dbsrv8.exe,看能不能连数据库文件
#2
在其它电脑上直接运行dbsrv8.exe,可以连接到数据库
#3
已经用odbc连接了,前面那些if判断全部注销掉,按说应该也可以运行吧
#4
用ODBC需要建DSN,可以考虑用ole连接,在程序开始运行时注册dboledb8.dll和dboledba8.dll,然后就可以直接连接数据库了
#5
回复:已经用odbc连接了,前面那些if判断全部注销掉,按说应该也可以运行吧
程序要达到的目的是一台电脑做服务器,所以必须调用dbsrv8.exe,启动服务器端;其他电脑作为客户端访问数据库
string currentdir
string ls_keyname
string ls_valuename
string ls_value
ls_username = trim(sle_username.text)
ls_password = trim(sle_password.text)
// 建立asa连接
if trim(sle_server.text) = "" or isnull(sle_server.text) then
messagebox("提示","请输入网络服务器名!")
return
end if
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data sources"
ls_valuename="cjlr"
ls_value="Adaptive Server Anywhere 8.0"
f_register(ls_keyname,ls_valuename,ls_value)
registryset("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr","","")
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr"
//得到当前的路径
currentdir = ls_directory
//配置其他的参数
ls_valuename="Driver"
ls_value=currentdir+"\dll\dbodbc8.dll"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="CommLinks"
ls_value="TCPIP{},SPX{},NetBIOS{},SharedMemory"
f_register(ls_keyname,ls_valuename,ls_value)
//ls_valuename="DatabaseFile"
//ls_value=currentdir + "\cjlr.db"
//f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DatabaseName"
ls_value="cjlr"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="AutoStop"
ls_value="yes"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Debug"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DisableMultiRowFetch"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="EngineName"
ls_value=trim(sle_server.text)
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Integrated"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="PWD"
ls_value="sql"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="UID"
ls_value="dba"
f_register(ls_keyname,ls_valuename,ls_value)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cjlr;UID=dba;PWD=sql;Servername="+trim(sle_server.text)+";DatabaseName=cjlr;CommLinks=TCPIP{},SPX{},NetBIOS{},SharedMemory'"
Connect;
程序要达到的目的是一台电脑做服务器,所以必须调用dbsrv8.exe,启动服务器端;其他电脑作为客户端访问数据库
string currentdir
string ls_keyname
string ls_valuename
string ls_value
ls_username = trim(sle_username.text)
ls_password = trim(sle_password.text)
// 建立asa连接
if trim(sle_server.text) = "" or isnull(sle_server.text) then
messagebox("提示","请输入网络服务器名!")
return
end if
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data sources"
ls_valuename="cjlr"
ls_value="Adaptive Server Anywhere 8.0"
f_register(ls_keyname,ls_valuename,ls_value)
registryset("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr","","")
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr"
//得到当前的路径
currentdir = ls_directory
//配置其他的参数
ls_valuename="Driver"
ls_value=currentdir+"\dll\dbodbc8.dll"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="CommLinks"
ls_value="TCPIP{},SPX{},NetBIOS{},SharedMemory"
f_register(ls_keyname,ls_valuename,ls_value)
//ls_valuename="DatabaseFile"
//ls_value=currentdir + "\cjlr.db"
//f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DatabaseName"
ls_value="cjlr"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="AutoStop"
ls_value="yes"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Debug"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DisableMultiRowFetch"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="EngineName"
ls_value=trim(sle_server.text)
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Integrated"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="PWD"
ls_value="sql"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="UID"
ls_value="dba"
f_register(ls_keyname,ls_valuename,ls_value)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cjlr;UID=dba;PWD=sql;Servername="+trim(sle_server.text)+";DatabaseName=cjlr;CommLinks=TCPIP{},SPX{},NetBIOS{},SharedMemory'"
Connect;
#6
把服务器名写死或者用ip试试,网络版很少用ASA数据库
#7
在开发环境中,服务器端启动数据库时能够正常启动;但程序打包,安装到其他计算机时(没有安装PB\asa)或安装到本机其他目录时,启动dbsrv8后,总提示can not open/read database ("路径/数据库名")。
注册表正常注册,可确定是连接数据库的问题,请高手指点
希望能解决问题
注册表正常注册,可确定是连接数据库的问题,请高手指点
希望能解决问题
#8
我也想了解,谢谢LZ.
#1
在其它电脑上直接运行dbsrv8.exe,看能不能连数据库文件
#2
在其它电脑上直接运行dbsrv8.exe,可以连接到数据库
#3
已经用odbc连接了,前面那些if判断全部注销掉,按说应该也可以运行吧
#4
用ODBC需要建DSN,可以考虑用ole连接,在程序开始运行时注册dboledb8.dll和dboledba8.dll,然后就可以直接连接数据库了
#5
回复:已经用odbc连接了,前面那些if判断全部注销掉,按说应该也可以运行吧
程序要达到的目的是一台电脑做服务器,所以必须调用dbsrv8.exe,启动服务器端;其他电脑作为客户端访问数据库
string currentdir
string ls_keyname
string ls_valuename
string ls_value
ls_username = trim(sle_username.text)
ls_password = trim(sle_password.text)
// 建立asa连接
if trim(sle_server.text) = "" or isnull(sle_server.text) then
messagebox("提示","请输入网络服务器名!")
return
end if
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data sources"
ls_valuename="cjlr"
ls_value="Adaptive Server Anywhere 8.0"
f_register(ls_keyname,ls_valuename,ls_value)
registryset("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr","","")
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr"
//得到当前的路径
currentdir = ls_directory
//配置其他的参数
ls_valuename="Driver"
ls_value=currentdir+"\dll\dbodbc8.dll"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="CommLinks"
ls_value="TCPIP{},SPX{},NetBIOS{},SharedMemory"
f_register(ls_keyname,ls_valuename,ls_value)
//ls_valuename="DatabaseFile"
//ls_value=currentdir + "\cjlr.db"
//f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DatabaseName"
ls_value="cjlr"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="AutoStop"
ls_value="yes"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Debug"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DisableMultiRowFetch"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="EngineName"
ls_value=trim(sle_server.text)
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Integrated"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="PWD"
ls_value="sql"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="UID"
ls_value="dba"
f_register(ls_keyname,ls_valuename,ls_value)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cjlr;UID=dba;PWD=sql;Servername="+trim(sle_server.text)+";DatabaseName=cjlr;CommLinks=TCPIP{},SPX{},NetBIOS{},SharedMemory'"
Connect;
程序要达到的目的是一台电脑做服务器,所以必须调用dbsrv8.exe,启动服务器端;其他电脑作为客户端访问数据库
string currentdir
string ls_keyname
string ls_valuename
string ls_value
ls_username = trim(sle_username.text)
ls_password = trim(sle_password.text)
// 建立asa连接
if trim(sle_server.text) = "" or isnull(sle_server.text) then
messagebox("提示","请输入网络服务器名!")
return
end if
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data sources"
ls_valuename="cjlr"
ls_value="Adaptive Server Anywhere 8.0"
f_register(ls_keyname,ls_valuename,ls_value)
registryset("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr","","")
ls_keyname="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\cjlr"
//得到当前的路径
currentdir = ls_directory
//配置其他的参数
ls_valuename="Driver"
ls_value=currentdir+"\dll\dbodbc8.dll"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="CommLinks"
ls_value="TCPIP{},SPX{},NetBIOS{},SharedMemory"
f_register(ls_keyname,ls_valuename,ls_value)
//ls_valuename="DatabaseFile"
//ls_value=currentdir + "\cjlr.db"
//f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DatabaseName"
ls_value="cjlr"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="AutoStop"
ls_value="yes"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Debug"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="DisableMultiRowFetch"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="EngineName"
ls_value=trim(sle_server.text)
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="Integrated"
ls_value="No"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="PWD"
ls_value="sql"
f_register(ls_keyname,ls_valuename,ls_value)
ls_valuename="UID"
ls_value="dba"
f_register(ls_keyname,ls_valuename,ls_value)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cjlr;UID=dba;PWD=sql;Servername="+trim(sle_server.text)+";DatabaseName=cjlr;CommLinks=TCPIP{},SPX{},NetBIOS{},SharedMemory'"
Connect;
#6
把服务器名写死或者用ip试试,网络版很少用ASA数据库
#7
在开发环境中,服务器端启动数据库时能够正常启动;但程序打包,安装到其他计算机时(没有安装PB\asa)或安装到本机其他目录时,启动dbsrv8后,总提示can not open/read database ("路径/数据库名")。
注册表正常注册,可确定是连接数据库的问题,请高手指点
希望能解决问题
注册表正常注册,可确定是连接数据库的问题,请高手指点
希望能解决问题
#8
我也想了解,谢谢LZ.