PB9.0 + ASA 8.0 服务器端 客户端 数据库连接问题???

时间:2023-01-24 05:55:56
  在开发环境中,服务器端启动数据库时能够正常启动;但程序打包,安装到其他计算机时(没有安装PB\asa)或安装到本机其他目录时,启动dbsrv8后,总提示can not open/read database ("路径/数据库名")。
  注册表正常注册,可确定是连接数据库的问题,请高手指点
程序如下:
启动数据库
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;

#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;

#6


把服务器名写死或者用ip试试,网络版很少用ASA数据库

#7


在开发环境中,服务器端启动数据库时能够正常启动;但程序打包,安装到其他计算机时(没有安装PB\asa)或安装到本机其他目录时,启动dbsrv8后,总提示can not open/read database ("路径/数据库名")。 
  注册表正常注册,可确定是连接数据库的问题,请高手指点

希望能解决问题

#8


我也想了解,谢谢LZ.