CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

如何读注册表中的数据?急!

楼主gloryict(朋友)2003-09-04 20:43:52 在 PowerBuilder / 基础类 提问

我想知道oracle安装的目录,用RegistryGet函数,代码如下  
  RegistryGet("HEKY_LOCAL_MACHINE\SOFTWARE\ORACLE","ORACLE_HOME",RegString!,ls_return)  
  return   ls_return  
  但是程序却没有反映。请各位高手看看有什么错误。谢谢! 问题点数:20、回复次数:9Top

1 楼eastpond(东塘)回复于 2003-09-04 21:11:43 得分 0

看看registryGet的返回值,  
  调试下程序,看ls_return   得到什么内容Top

2 楼gloryict(朋友)回复于 2003-09-04 21:19:06 得分 0

好像什么都没有得到,  
  sle_1.text   =   ls_return  
  但sle_1里面什么都没有现实  
  顺便问一句,我想输出ls_return,应该怎么做?Top

3 楼gloryict(朋友)回复于 2003-09-04 21:52:33 得分 0

对注册表数据没有成功,不知道为什么?  
  高手帮帮忙,谢谢!Top

4 楼thelazyman(卧虎藏龙)回复于 2003-09-04 22:15:06 得分 0

你先查看注册表中是否有此值!!  
  执行函数  
  if   RegistryGet("HEKY_LOCAL_MACHINE\SOFTWARE\ORACLE","ORACLE_HOME",RegString!,ls_return)=1   then    
        if   ls_return<>''   then  
            messagebox('提示','获得注册表的值为:'+ls_return)  
        end   if  
  else  
        messgebox('提示','函数registryget()执行失败!')  
  end   if  
   
  Top

5 楼gloryict(朋友)回复于 2003-09-04 22:19:27 得分 0

我试过了,执行失败!  
  不知道为什么?Top

6 楼eltoro(一天到晚游泳的鱼)回复于 2003-09-04 22:23:03 得分 10

以下一篇文章,希望能对楼主有帮助:  
  /*****************************************************************  
  行需要  
   
  手工设置ODBC。本文介绍一种代码配置的方法可以免去在进行单机或网络数据库应用程序时进行手工配置ODBC的烦琐。PowerBuilder是功能    
   
  强大的客户端开发工具,它的优势在于数据库应用程序的开发,所以绝大部分应用必须与数据库管理系统配合起来才能运行。OBDC是一种编    
   
  程接口,它能使应用程序访问以结构化查询语言(SQL)作为数据访问标准的数据库管理系统。PB与数据库的连接可以通过ODBC接口实现,在    
   
  ODBC中配置好数据源后,便可在程序代码中连接数据库并对数据库进行各种操作了。配置ODBC的方法主要有三种:手工配置、代码自动配置    
   
  和通过安装程序(如InstallShield等专业安装程序)自动配置。大部分PB资料对手工配置ODBC均作了介绍,在这里主要介绍在代码中进行    
   
  ODBC的配置的方法。第三种方法可以参考InstallShield等软件的使用说明。    
   
    原   理    
   
    Windows中所有的ODBC数据源在系统注册表中都有记载,因此只要编写相应的代码对注册表中的项目进行相应的修改即可。Windows中与  
   
  ODBC相关的键,主要有下面几项:    
   
    HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER   记录所有已安装的ODBC驱动程序;    
   
    HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI   记录各种ODBC驱动程序的相关信息;    
   
    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC   Data   Sources   记录各种数据源的类型;    
   
    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI   记录各种数据源的详细信息。    
   
    只要打开Windows   95(Windows   98、Windows   NT4或Windows   2000)菜单“开始”,然后单击“运行”,输入Regedit运行注册表程序,  
   
  在注册表中选择左边的树结构,查找上述相应的选项,就可以看到其中的详细信息。    
   
    我们只要在代码中对这些键进行配置,便可达到配置ODBC的目的。    
   
    实   现    
   
    下面以PowerBuilder   7.0   内置的Sybase   SQL   Anywhere   6.0数据库为例介绍ODBC的代码配置方法。    
   
    1、打开注册表,找到数据库驱动程序及相关文件    
   
    首先找到相应的数据库驱动程序,这些文件可以在注册表的HKEY_LOCAL_MACHINE\Software    
   
    \ODBC\ODBCINST.INI下相应键中找到。如Sybase   SQL   Anywhere   6.0为dbeng60.exe,Wod60t.dll,以及一些其他相关的动态链接库,此  
   
  例中为Dbl60t.dll、Wl60ent.dll、Wtr60t.dll、Wodbc.gid和Wtr60t.dll。这些文件必须与最终的可执行程序一起安装到用户的计算机上。  
   
  它们可以与应用程序放在一起,也可以放在一个特定的目录下(本例为Windows   98的System目录下)。在调试时可先将这些文件复制到指定  
   
  的目录下。    
   
    2、在应用程序中用PB脚本代码配置ODBC    
   
    在应用的Open事件中对ODBC配置的脚本代码如下:    
   
    Ulong   ul_num;    
   
    Int   li_sysdir,li_dir1,li_dir2,li_dir3,li_dir4,li_dir5,li_app;    
   
    String   ls_driver,ls_start,ls_location,ls_apppath,ls_dbpath,ls_odbcstr;    
   
    //获取操作系统的system目录,并保存到ls_location变量    
   
    li_sysdir   =   RegistryGet(″KYEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup″,″SysDir″,RegString!ls_location);    
   
    IF   li_sysdir   =   -1   THEN    
   
       Messagebox(′错误′,′应用程序无法获取Windows的系统目录,系统将终止运行!′,Stopsign!);    
   
    RETURN;    
   
    END   IF    
   
    //判断Sybase   SQL   Anywhere6.0的驱动程序是否正确安装    
   
    ls_driver   =   ls_location+′\WOD60T.DLL′    
   
    ls_start   =   ls_location+′\dbeng60.EXE′    
   
    IF   NOT   (FileExists(ls_driver)   AND   FileExists(ls_start))   THEN    
   
    Messagebox(′错误′,′系统中没有安装SQL   Anywhere   6.0的驱动程序,系统将终止运行!′,StopSign!);    
   
    RETURN;    
   
    END   IF    
   
    //设置ODBC\ODBCINST.INI\ODBC   DRIVERS    
   
    li_sysdir=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER′,′Sybase   SQL   Anywhere   6.0′,RegString!,′Installed′);    
   
    IF   li_sysdir   =   -1   THEN    
   
    Messagebox(′错误′,′应用程序无法设置ODBC   DRIVERS,系统将终止运行!′,StopSign!);    
   
    RETURN;    
   
    END   IF    
   
    //设置ODBC\ODBCINST.INI    
   
    li_dir1=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase   SQL   Anywhere   6.0′,′CPTimeout′,RegString!,′not   pooled′)    
   
    li_dir2=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase   SQL   Anywhere   6.0′,′Driver′,RegString!,ls_driver)    
   
    li_dir3=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase   SQL   Anywhere   6.0′,′Setup′,RegString!,ls_driver)    
   
    IF   li_dir1=-1   OR   li_dir2=-1   OR   li_dir3=-1   THEN    
   
    Messagebox(′错误′,′应用程序无法设置ODBCINST.INI,系统将终止运行!′,StopSign!);    
   
    RETURN;    
   
    END   IF    
   
    //设置ODBC   DATA   SOURCE(MyDataSource为数据源名)    
   
    li_sysdir=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC   Data   Sources′,′MyDataSource′,RegString!,′Sybase   SQL   Anywhere   6.0′);    
   
    IF   li_sysdir=-1   THEN    
   
    Messagebox(′错误′,′应用程序无法设置ODBC   DATA   SOURCE,系统将终止运行!′,StopSign!);    
   
    RETURN;    
   
    END   IF    
   
    //获取应用程序的安装路径(MyApp为应用程序安装到用户计算机上后在注册表中注册的应用程序名,MyDatabase.db为应用程序的数据库名,与应用程序在同一目录下,MyDataSource为数据源名)    
   
    li_app=RegistryGet(″KYEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App   Paths\MyApp″,″Path″,RegString!ls_apppath)    
   
    IF   li_app=-1   THEN    
   
    Messagebox(′错误′,′应用程序无法获取程序安装路径名,系统将终止运行!′,StopSign!);    
   
    RETURN    
   
    ELSE    
   
    ls_dbpath=ls_apppath+′MyDatabase.db′;    
   
    END   IF    
   
    //设置ODBC.INI    
   
    li_dir1=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′driver′,RegString!,ls_driver);    
   
    li_dir2=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′start′,RegString!,ls_start);    
   
    li_dir3=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′autostop′,RegString!,′yes′);    
   
    li_dir4=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′DataBaseFile′,RegString!,ls_db_path);    
   
    li_dir5=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′DataBaseName′,RegString!,′MyDatabase′);    
   
    IF   li_dir1=-1   OR   li_dir2=-1   OR   li_dir3=-1   OR   li_dir4=-1   OR   li_dir5=-1   THEN    
   
    Messagebox(′错误′,′应用程序无法设置ODBC.INI,系统将终止运行!′,StopSign!);    
   
    RETURN    
   
    END   IF    
   
    ls_odbcstr=′dsn=MyDataSource;databasename=MyDatabase;databasefile=′+ls_dbpath;    
   
    sqlca.dbms=′odbc′;    
   
    sqlca.databse=′MyDatabase′;    
   
    sqlca.dbparm=″connectstring=′   ″+ls_odbcstr+″;uid=dba;pwd=sql′   ″;    
   
    connect   using   sqlca;    
   
    open(w_frame);    
       
  Top

7 楼klbt(快乐白兔)回复于 2003-09-04 23:55:44 得分 10

看一看你的大小写,比如“SOFTWARE”  
  Top

8 楼gloryict(朋友)回复于 2003-09-05 09:03:39 得分 0

谢谢各位大哥,可能就是大小写的问题吧  
  我换成Software就可以了。Top

9 楼runsoft(清风)回复于 2003-09-05 20:38:25 得分 0

恭喜,恭喜Top

相关问题

  • 急!读写注册表中的二进制数据!
  • 如何读写注册表的(默认)的数据?和如何服务器读写客户机的注册表?急!!急!!高分!
  • 读注册表
  • Win200读注册表的问题,急。
  • 注册表中BINARY型数据的读取
  • 关于读写注册表Binary类型数据的问题------〉〉〉〉〉〉〉〉〉〉
  • 怎样写入注册表和从注册表中读出,太急了,谢谢,等待中...
  • 98下读不了注册表!急急急急!
  • 98下读不了注册表!急急急!
  • 关于注册表中二进制数据的读出写入问题?

关键词

  • anywhere
  • sybase
  • 应用程序
  • 代码
  • 数据库
  • 数据
  • 驱动
  • 安装
  • software
  • 系统

得分解答快速导航

  • 帖主:gloryict
  • eltoro
  • klbt

相关链接

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

广告也精彩

反馈

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