CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

请问怎么在pb7代码中实现建立数据源?

楼主pobosskey(有房有车(租的房+自行车))2002-10-07 08:40:20 在 PowerBuilder / 基础类 提问

现在正要做一个单机版升网络版本的升级程序,单机用的是access,网络用的是SQL   server7     请问怎么建立连接这两个的数据源?假如在系统中原来没有这样的数据源,但是现在要建立?? 问题点数:100、回复次数:4Top

1 楼zqllyh(学习Stupid As Pig中...)回复于 2002-10-07 09:01:06 得分 100

在PB程序中实现ODBC数据源的添加  
   
  (作者:鹿寒)  
   
  思路:  
   
  主要是利用PB对注册表操作函数RegistryGet()和RegistrySet(),这两个函数以及其他注册表函数在PB的帮助里都有详细说明。  
   
  再就是利用PB的ProfileString()函数读取INI文件中预先定义好的参数。  
   
     
   
  写注册表的源程序:  
   
  string   ls_sys[],ls_driver[],st_driver,st_path  
   
  integer   li_rtn  
   
  ls_me="新星科技股份有限公司(New   Star,   Inc.)"  
   
  ls_version="2.0"  
   
  ls_sys[1]="HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase   SQL   Anywhere   5.0"  
   
  ls_sys[2]="HKEY_CURRENT_USER\Software\"+ls_me+"\仓储管理系统\"+ls_version  
   
  ls_sys[3]="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC   Data   Sources"  
   
  ls_sys[4]="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI"  
   
  li_rtn   =   RegistryGet(ls_sys[1],   "Driver",   RegString!,   st_driver)  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","未安装Sybase   SQL   Anywhere   5.0   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn   =   RegistryGet(ls_sys[2],   "InstPath",   RegString!,   st_path)  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取安装路径出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  string   envfile,ls_source[],ls_drivepath,ls_temp  
   
  integer   i  
   
  envfile="regedit.ini"  
   
  ls_source[1]="cl"  
   
  ls_source[2]   =ProfileString(envfile,"INI","AutoStop","   ")  
   
  ls_source[3]   =ProfileString(envfile,"INI","DatabaseFile","   ")  
   
  ls_source[4]   =ProfileString(envfile,"INI","DatabaseName","   ")  
   
  ls_source[5]   =ProfileString(envfile,"INI","Description","   ")  
   
  ls_source[6]   =ProfileString(envfile,"INI","Driver","   ")  
   
  ls_source[7]   =ProfileString(envfile,"INI","PWD","   ")  
   
  ls_source[8]   =ProfileString(envfile,"INI","Start","   ")  
   
  ls_source[9]   =ProfileString(envfile,"INI","UID","   ")  
   
  li_rtn=RegistrySet(ls_sys[3],   ls_source[1]   ,   RegString!,   "Sybase   SQL   Anywhere   5.0")  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  ls_sys[4]=ls_sys[4]   +   "\"   +   ls_source[1]  
   
  li_rtn=RegistrySet(ls_sys[4],   "AutoStop"   ,   RegString!,   ls_source[2])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "DatabaseFile"   ,   RegString!,   st_path+"\"+ls_source[3])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "DatabaseName"   ,   RegString!,   ls_source[4])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "Description"   ,   RegString!,   ls_source[5])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错?!",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "Driver"   ,   RegString!,   st_driver)  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "PWD"   ,   RegString!,   ls_source[7])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  ls_temp=st_driver  
   
  i=pos(ls_temp,"\")  
   
  do   while   i>0  
   
  ls_drivepath=ls_drivepath+left(ls_temp,i)  
   
  ls_temp=right(ls_temp,len(ls_temp)-i)  
   
  i=pos(ls_temp,"\")  
   
  loop  
   
  li_rtn=RegistrySet(ls_sys[4],   "Start"   ,   RegString!,   ls_drivepath+ls_source[8])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  li_rtn=RegistrySet(ls_sys[4],   "UID"   ,   RegString!,   ls_source[9])  
   
  IF   li_rtn   =   -1   THEN  
   
  messagebox("错误","读取系统文件或写注册表出错   !",information!,ok!)  
   
  RETURN  
   
  END   IF  
   
  regedit.ini文件格式如下:  
   
  [INI]  
   
  AutoStop=yes  
   
  DatabaseFile=Psdemodb.db  
   
  DatabaseName=仓储管理系统  
   
  Description=cl  
   
  Driver=  
   
  PWD=sql  
   
  Start=dbeng50.exe  
   
  UID=dba  
   
  备注:  
   
  程序中ls_sys[2]变量代表的注册表键值是我通过安装程序制作工具自动生成的,每个人使用的制作安装程序的工具不同,这个键值也许不尽相同。其实用意只是在于取得st_path这个变量,它保存应用程序安装后所在路径,其实也可以用API函数得到,至于使用API函数怎么取得当前程序所在路径就不讲了。  
   
       
  Top

2 楼hzhxxx(程序方程)回复于 2002-10-07 10:17:00 得分 0

同意!Top

3 楼hucool(鱼淼)回复于 2002-10-07 11:16:10 得分 0

upTop

4 楼quancmlove(从子)回复于 2002-10-07 13:28:18 得分 0

同意以上意见,小伙子,努力吧!Top

相关问题

  • 在代码里怎么建立sqlserver数据库?
  • 如何用VB代码建立SQL SERVER数据库
  • 能否用 ADO 代码建立一数据库文件(mdb)?
  • 如何用vb代码建立ACCESS2000的数据库?
  • 高分求教-如何建立数据库(用代码)
  • 怎样用代码建立一个ODBC数据源?
  • 如何用PB代码附加SQL2000数据库?
  • 请大家指教写pb代码备份sybase数据库
  • ADO纯代码方式建立一个数据库连接是怎么写的?
  • 请问如何在vb中用代码在ODBC中建立数据库源

关键词

  • 函数
  • pb
  • 数据
  • 安装
  • source
  • software
  • sql
  • ls
  • registryget
  • 数据源

得分解答快速导航

  • 帖主:pobosskey
  • zqllyh

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo