社区
PowerBuilder
帖子详情
pb8.0+ASA7.0的 C/S 模式的数据库应该怎么配置?
shuihersina
2003-11-25 11:32:10
请各位高手告诉我
pb8.0+ASA7.0的 C/S 模式的程序发布的时候要想顺利运行,应该怎样写注册表
——客户端和服务器端的注册表各应该怎样写?
(千万不要告诉我手动配置——手动配置我是会的)
先谢谢了!
...全文
87
6
打赏
收藏
pb8.0+ASA7.0的 C/S 模式的数据库应该怎么配置?
请各位高手告诉我 pb8.0+ASA7.0的 C/S 模式的程序发布的时候要想顺利运行,应该怎样写注册表 ——客户端和服务器端的注册表各应该怎样写? (千万不要告诉我手动配置——手动配置我是会的) 先谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuihersina
2003-11-26
打赏
举报
回复
楼上说的好像是单机版的本地数据源的注册,
我说的是 C/S 模式的网络数据库的注册呀!
麻烦你告诉我好么??
qqjj7758
2003-11-26
打赏
举报
回复
强烈建议用安装工具来设置注册表 那样更令灵活
qqjj7758
2003-11-26
打赏
举报
回复
这样的例子好多
动态往注册表里填写数据 很容易 一个ini文件就帮你搞定
二、使用PB的注册函数
PB中使用“RegistrySet()”函数在注册表中设置或创建指定的键,以下是该函数语法及参数。
语法:
RegistrySet ( key, valuename, valuetype, value )
参数:
key:string类型,指定键名;
valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串(″″)。如果注册库中不存在指定值名,该函数将创建新的值名;
valuetype:RegistryValueType枚举类型,指定值的数据类型,这里我们选用“regstring!”;
value:要设置的值,其数据类型应该与valuetype参数指定的类型相匹配。
返回值:Integer型。函数执行成功时返回1,失败时返回-1。
三、应用实例
假设我们连接到“sybase sql anywhere 5.0”创建的本地数据库“c:\pb\ex.db”,数据源名称为“ex”。
/*如果是第一次运行该系统,则注册数据源:为了保证应用程序只是在首次运行时注册数据源,需要在程序的工作目录下创建一个INI文件,该文件包含“start”小节, 其中建立“first=1”*/
integer rc
//取得INI文件中“start”小节 “first”的值
rc=profileint(″first.ini″,″start″,″first″,1)
//rc=1则是初次运行该系统,进行注册
if rc=1 then
/*将数据源名称“ex”注册到“HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources”下。*/
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources″,″ex″,regstring!,″sybase sql anywhere 5.0″)
/*“HKEY_CURRENT_USER\software\odbc\odbc.ini”下新增以该数据源名称“ex”为键名的子键,*/
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″″,regstring!,″″)
//创建连接到数据源所需要的参数
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″autostop″,regstring!,″yes″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″databasefile″,regstring!,″c:\pb\ex.db″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″databasename″,regstring!,″ex″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″driver″,regstring!,″wod50t.dll″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″pwd″,regstring!,″sql″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″start″,regstring!,″dbeng50 -Q″)
registryset(″HKEY_CURRENT_USER\software\odbc\odbc.ini\ex″,″uid″,regstring!,″dba″)
/*设置INI文件中“start”小节的“first=0”,避免下次运行时再次注册数据源*/
setprofilestring(″first.ini″,″start″,″first″,″0″)
end if
将以上代码加入应用对象的open事件中,执行程序即可完成ODBC数据源的注册。
代码中为了更好地说明registryset()函数的使用,将连接的数据库固定在“c:\pb”目录下。在具体应用中,可以使用外部函数“GetCurrentDirectoryA()”得到当前目录,与数据库文件名合并为一个字符串变量后,以该变量注册″databasefile″的值,就实现了真正的动态注册ODBC数据源,这里不再赘述。
mittee
2003-11-26
打赏
举报
回复
answer9=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\YOU_DB_CLIENT","EngineName",RegString!,"YOUR_DB_SERVER")//这里指定你数据服务器的名字
answer10=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\YOU_DB_CLIENT","CommLinks",RegString!,"TCPIP{}") //这里指定通过tcp/ip 连接 生成 dsn后看一下就知道了
answer11=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\YOU_DB_CLIENT","AutoStop",RegString!,"YES")
pb8
2003-11-26
打赏
举报
回复
//服务器端
global type uf_runasaserver from function_object
end type
forward prototypes
global function integer uf_runasaserver (string as_runpath, string as_servername, string as_db, string as_log)
end prototypes
global function integer uf_runasaserver (string as_runpath, string as_servername, string as_db, string as_log);//运行服务器数据库
string ls_Server,ls_cmd
ls_server = as_runpath + "dbsrv7"
ls_cmd = ls_server + ' ' + as_db + ' -n ' + as_servername&
+ ' -x tcpip -c 44m -q -o ' + as_log
run(ls_cmd)
return 0
end function
//客户端
global type uf_regasaforserver from function_object
end type
forward prototypes
global function integer uf_regasaforserver (string as_odbc, string as_ip, string as_db, string as_user, string as_pass, string as_drive)
end prototypes
global function integer uf_regasaforserver (string as_odbc, string as_ip, string as_db, string as_user, string as_pass, string as_drive);String ls_odbckey,ls_host
int li_rtn
ls_odbckey = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\' + as_odbc
ls_host = "TCPIP{host=" + as_ip + "},SharedMemory"
//数据库驱动程序
li_rtn = RegistrySet(ls_odbckey,"Driver", RegString!,as_drive)
if li_rtn = -1 then return -1
//用户名
li_rtn = RegistrySet(ls_odbckey,"UID", RegString!,as_user)
if li_rtn = -1 then return -1
//密码
li_rtn = RegistrySet(ls_odbckey,"PWD", RegString!,as_pass)
if li_rtn = -1 then return -1
//数据库名
li_rtn = RegistrySet(ls_odbckey,"DatabaseName", RegString!,as_db)
if li_rtn = -1 then return -1
//引擎名
li_rtn = RegistrySet(ls_odbckey,"EngineName", RegString!,as_db)
if li_rtn = -1 then return -1
//自动停止
li_rtn = RegistrySet(ls_odbckey,"AutoStop", RegString!,"YES")
if li_rtn = -1 then return -1
li_rtn = RegistrySet(ls_odbckey,"Integrated", RegString!,"NO")
if li_rtn = -1 then return -1
//网络连接
li_rtn = RegistrySet(ls_odbckey,"CommLinks", RegString!,ls_host)
if li_rtn = -1 then return -1
return 0
end function
shuihersina
2003-11-26
打赏
举报
回复
怎么没有人知道呀
PB及ASA的打包说明
PB及ASA的打包说明。以pb6-8.0的实际列子进行了详细介绍说明,内容十分详细,对初学者有很大的帮助。
PB脚本注册数据源(ASA的打包说明)
PB及ASA的打包说明 一.安装步骤 一般地说发布一个PB应用除应用程序部件本身外,还
应该
包含如下文件及相关操作: 1. PowerBuilder运行时动态链接库( Runtime Library )。 2.
数据库
接口:一方面包括PB提供的
数据库
专用接口或ODBC接口程序,另一方面包括不同
数据库
厂商提供的ODBC
数据库
驱动程序。 3. ODBC数据源的
配置
。 二.PowerBuilder运行时动...
pb开发的程序如何脱离pb的开发环境
pb开发的程序应用pb+sqlserver应用程序原理,把pb开发的程序编译好后,放到客户端,然后把pb运行跟连接sqlserver需要的dll文件考过来放到pb应用的根目录下,就是放到一块.然后就可以了pb+sqlserver客户端需要的dll文件下载 //现在不能下了,大家自己找找
PB运行库(PB6.5,PB7,
PB8
,PB9)
[收藏]PB运行库(PB6.5,PB7,
PB8
,PB9) 一、PowerBuilder运行时动态链接库( Runtime Library )。不同版本的PB所需要的运行时动态链接库文件不尽相同,但库名有相似的地方,这些DLL都必须包含在应用程序目录或系统目录当中: PB6.5所需文件: 必需 PBVM60.DLL PowerBuilder 虚拟机,可选 PBDWE60.DLL D
Adaptive Server Anywhere(ASA)查询的怪异问题
Adaptive Server Anywhere是PB自带的一个
数据库
, 早期做的一些项目是使用ASA8做为网络
数据库
的,今天客户发现在product的description方面有问题. 数据表docdesc结构很简单autoid unsigned int autoincrementdoc_no varchar(10)product_no varchar(15)fi
PowerBuilder
1,106
社区成员
66,454
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章