用ASA8.0做服务器,在没有安装PB和AHA的客户机器上运行PB程序的攻略
在论坛里也混了一个月了,得到很多帮助,也养成了自己努力去解决问题的习惯。这里将网络上很多人都想问的,还有很多攻略写的都很难懂的问题,由我这个初学者写一下,我想会比较的易懂,当然,我也希望高手们能提成宝贵意见
还有能在我的基础上更加深入去为这个问题做更好的总结,谢谢
第一步:用AHA8.0建立数据库
这个不是很难,只是我走了很多弯路 PB 8.0将Sybase Central 4.1藏了起来,我是安装了7.0才发现有这个东西的
可以用它来建立数据库,具体在你的Sybase文件夹的Shared\Sybase Central 4.1里面
顺便提一下,建立好的数据库永ODBC建立数据源后,在PB里打开后我们发现有些列的属性搞错了,我就老搞错NULL
刚开始都要重新建一次表,
后来发现,在Sybase Central 里同样连接这个数据源可以对表里的任何属性进行修改,非常的方便
第二步
将建立的数据库复制或者移到你想做服务器的电脑上,并在此电脑上安装PB,这个要老老实实的安装
特别是安装到anywhere的licensed seats一定要从1改为多一些,20以上吧
然后编写BAT文件
内容为:
@echo off
dbsrv8.exe f:\customer\HF_sys.db -n HF -x tcpip -c16m -q -o f:\customer\test.log
exit
这里的f:\customer\HF_sys.db是我数据库的地址
HF是我数据源名
f:\customer\test.log 记录下的运行信息
tcpip 设置为TCPIP服务器连接方式
然后将这个文件复制到windows的启动里面,就可以开机运行服务器了
网上还要写很多的,我也不是很懂,不过这里BAT文件运行以后,CMD窗口就是关不了不知道是什么问题
请高手指点
第三部 无安装PB和AHA8的客户端的连接的建立
PB编程的事情我就略过了,这里只说怎么连接上刚才建立的AHA服务器
这里确实要解决3个问题
1.PB程序运行库
2.安装AHA8.0的驱动程序
3.数据源的注册
先看1
这个简单,网上找的的,运行这个就可以生成一个MSI程序,将其和生成的程序复制到客户机运行安装即可建立连接PB运行库
2.安装AHA8.0的驱动程序
3.数据源的注册
这里附上需要的AHA驱动程序,其实就几个,为了安全我将网上说的PB的也放了进去,我怀疑将AHA8里面的win32全端最简单
这个其实可以一起来
在你的应用的open事件里加入以下内容
string ls_drivervalue
string ls_source
string ls_driverpath="HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers"
string ls_Sourcespath="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI"
string appdir
appdir="F:\Customer\runtime\dbodbc8.dll" //驱动程序地址
string Sybase_name
Sybase_name="HF"//数据源名称
RegistryGet(ls_driverpath,"Adaptive Server Anywhere 8.0",regstring!,ls_drivervalue)
if ls_drivervalue<>"Adaptive Server Anywhere 8.0" then // 注册AHA 8.0
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 8.0",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Translators","Adaptive Server Anywhere 8.0 Translator",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Driver",RegString!,appdir)
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Setup",RegString!,appdir)
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0 Translator","Driver",RegString!,appdir)
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0 Translator","Setup",RegString!,appdir)
end if
//建立数据源 如果没有数据源建立 有的话 连接
RegistryGet(ls_Sourcespath,"HF",regstring!,ls_source)
if lls_source<>"HF" then // 是否数据源存在
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources",Sybase_name,RegString!,"Adaptive Server Anywhere 8.0")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","Driver",RegString!,appdir)
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","UID",RegString!,"dba")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","PWD",RegString!,"sql")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","Driver",RegString!,appdir)
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","Autostop",RegString!,"Yes")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","compress",RegString!,"No")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","EngineName",RegString!,"HF")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","Integrated",RegString!,"No")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\HF","CommLinks",RegString!,"TCPIP{HOST=192.168.0.104}") //这里的IP地址是服务器的IP地址
end if
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=HF;UID=dba;PWD=sql'"
connect;
open(w_main)
基本上这样就可以实现连接并正常运行了
但还是有很多问题
1.两个if判断语句好像在存在的情况下也是写入,并没有跳过,不知道是哪里写错了
2.这里要将数据源名称和驱动的设置成可变是最好的,我这里过于简单,但容易懂一些
3.关于注册表的写法可能和别人不一样,我是自己一个个手动建立后再用程序写上的,还有如果运行后注册表里没有AHA8的文件夹出现,建议重启一次即可
4.没有数据库连接失败的提示,要增加
基本上就这些,也是一次次摸索的过程,还有大大们的帮助,希望能抛砖引玉,多多指点
谢谢
自己顶一个,EXHZ 帮我指点一下吧,最好能多多补充 bigfrog 发表于 2015-3-11 20:59
自己顶一个,EXHZ 帮我指点一下吧,最好能多多补充
写的非常详细~~很实用{:soso_e179:}。
我以前也用过ASA做服务器,在局域网内性能也还好。
只是,既然是服务器了,在开发时,要特别注意,有很多地方跟单机开发不一样了。
页:
[1]