PB中如何用SQLConfigDataSource函数创建ODBC
创建ODBC数据源步骤
创建SQL server数据库ODBC数据源1进入ODBC数据源管理器,选择“用户DSN ”页面,按“添加”按钮。
Mi crosoft iKcel^Tr eiber (*.xlsJ filicrQScft JflxPrfl VTi Driver (*. db£)Mi eras o£tODBC for Ora.deFili crosoft Tara-dox Hr i ver C*_ db )Mi Crips <?ft J =irad^x-Tr e;i b(*. dLb ) Mi cros o£t Text Br i ver 险txt; csv JMicrosoft Text~7reib@r (*. txt; *. CEV J Mi crD5oft Yi snal JoatPr o DriverMi croE o£t V1 siial F oacPr o—Tr eiber职消3、设置数据源“名称”,选择SQL Server服务器。
2、选择数据源驱动程序“ SQLServer ”。
选择您想为亘安装数据源的驱动程序电)0创建新数据源SQL Sarver创建列SQL Server 的新数据源此向导将帮助逹立一亍能用于连接S3L S^rv^r的OJBC数据源* 您想用卄么名称来命名数据源?名称逊):[siaffKSB您帑對口何描述哉数据?描述⑪:|鰹想倒朗1个SQL Server?服务器但):|HDHE-M644J409I 匸斋成下一步血)>4、选择验证登录方式,设置SQL Server数据库的登录ID和密码(要跟DBMS设置一致)创建列SQL Server的新数据源£QL S erwer 应该如何验证畫录ID的冥伪0广使用网络登录ID的gZ HT验证叫°&懂用用戶辎入豊录ID和蠱码的SQL S er ver 豔征收).要更改用于与网L 5牡芮話通讯的阿络库,请单击“客尸覇配胃'畧尸端配置CT)...V逹接SQL S.rv*r以茯得瓦它配置选项的默认设置©)•登录m iy: |sa|密码②:I<上一步©)下一步血)>腿消幫助5、选中“更改默认数据库”,选择要创建数据源的数据库。
在PowerBuilder中动态注册ODBC数据源
在PowerBuilder中动态注册ODBC数据源(深圳:独孤求败 2003-05-16)PowerBuilder(以下简称PB)作为客户端的数据库应用开发工具,一般要与数据库服务器结合起来开发客户机/服务器体系的应用。
而通过ODBC连接到数据库是PB存取数据的重要方式。
为了简化程序的安装,方便用户的使用,分发到用户手中的PB应用程序必须能够完成对ODBC数据源的动态注册。
在PB中,可以使用其自身的注册(Registry)函数、安装程序制作软件“InstallShield”、Window s的API函数等,完成对ODBC数据源的动态注册。
其中,PB自身的注册(Registry)函数具有简单、易于修改和控制的特点,同时也便于开发者理解和掌握。
本文就以此方法为例,说明在PB中如何动态注册ODBC数据源。
一、ODBC数据源在Windows注册表中注册的项目为了完成对ODBC数据源的注册,要在注册表中进行以下注册:1 将数据源名称注册到“HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources”下。
2 “HKEY_CURRENT_USER\software\odbc\odbc.ini”下新增以该数据源名称为键名的子键,并在此键下添加连接数据源所需要的参数。
这些参数包括所连接数据库的位置、文件名称(databasefile)、启动数据库的命令文件(start)、pwd、uid等。
需要注意的是,不同数据库系统所需的参数并不相同,我们可以通过以下方法得到某一具体数据源的参数:首先在PB中通过手工设置,连接到数据源,然后运行注册表编辑程序(Regedit.exe),查看“HKEY_CURRENT_USER\software\odbc\odbc.ini”下,以该数据源名称为键名的子键中的值,这里的内容就是我们所需要的数据源的连接参数。
二、使用PB的注册函数PB中使用“RegistrySet()”函数在注册表中设置或创建指定的键,以下是该函数语法及参数。
PB9.0实验操作说明
实验步骤:一、建立数据库1.创建数据库exam_pb2.建立表students3.为表students指定主键为“学号”4.向表中输入数据二、建立应用程序1.建立工作空间“练习一”2.建立应用程序“test”3.建数据窗口dw_15.建应用程序窗口w_main6在应用程序窗口中添加控件7.为数据窗口指定目标对象“student”为主窗口定义标题!为控件定义标题!8.为应用程序和控件编写脚本一定要保存窗口!!①应用程序test脚本:open(w_main) ——打开主窗口②应用程序窗口w_main的各个脚本:w_main open事件的脚本:SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "Connectstring='DSN=exam_pb;uid=dba;pwd=sql'"connect using sqlca;dw_1.settransobject(sqlca)“增加”命令按钮click事件的脚本:dw_1.insertrow(0)dw_1.setfocus()“删除”命令按钮click的脚本:dw_1.deleterow(0)“检索”命令按钮click的脚本:dw_1.retrieve()“过滤”命令按钮click的脚本:w_main.dw_1.setfilter("系别='计算机系'")w_main.dw_1.filter()“保存”命令按钮click的脚本:dw_1.update()“退出”命令按钮click的脚本:close(parent)三、连接数据库1.建立ODBC数据源“exam_pb”用户名:dba 密码:sql 考试时也是这个2.建立数据库描述文件“exam_pb”预览和测试!!3.连接数据源四、运行程序------------------------------实验步骤:一、建立工作空间“练习二”二、建立应用程序“test”三、建立主窗口“w_main”为主窗口定义标题!!保存!!为应用程序test编写脚本“open(w_main)”四、建立菜单“m_main”为菜单添加子菜单项!!为子菜单项定义标题!!五、将菜单挂在主窗口上保存!!!!!时刻不要忘记六、建立计算器窗口“calculator”为计算器窗口定义标题!!1.为计算器窗口添加控件此窗口包含三个静态文本框控件三个单行编辑框控件五个命令按钮!清空单行编辑框中的“none”字符2.为各个控件编写脚本①为“加”命令按钮编写脚本:real m,nm=real(sle_1.text)n=real(sle_2.text)sle_3.text=string(m+n)②为“减”命令按钮编写脚本:real m,nm=real(sle_1.text)n=real(sle_2.text)sle_3.text=string(m - n) 一定要注意m的后面和n的前面要有空格。
配置ODBC
程序发布的过程中,要完成对ODBC数据源的动态注册,不外乎以下几种方法:1:在安装程序制作软件如“InstallShield”中设置;2:利用软件工具其自身的注册(Registry)函数来实现;3:利用Windows的API函数来实现等。
今天我首先介绍的就是如何利用PB自身的注册函数来说明在PB中如何动态注册ODBC数据源。
为了完成对ODBC数据源的注册,首先需要了解在注册表中进行注册的相关信息,这里以Adaptive SQL Anywhere 8.0自身带的两个数据库在注册表中的信息来作一个简单说明:一、熟悉需要注册的信息1:了解对于系统默认已经配置好的若干个数据源,其信息在注册表中是如何存在的。
通过以下图示看到两个数据源名称被注册到“HKEY_CURRENT_USER\software\odbc\odbc.ini\odbc data sources”下。
2:然后,对于其中的某个数据源,其具体信息被注册到了“HKEY_CURRENT_USER\software\odbc\odbc.ini”。
在该目录下新增以该数据源名称为键名的子键,并在此键下添加连接数据源所需要的参数。
这些参数包括所连接数据库的位置、文件名称(databasefile)、启动数据库的命令文件(start)、pwd、uid等。
需要注意的是,不同数据库系统所需的参数并不相同,我们可以通过以下方法得到某一具体数据源的参数:首先在PB中通过手工设置,连接到数据源,然后运行注册表编辑程序(Regedit.exe),查看“HKEY_CURRENT_USER\software\odbc\odbc.ini”下,以该数据源名称为键名的子键中的值,这里的内容就是我们所需要的数据源的连接参数。
二、了解注册函数的语法了解了以上需要注册的信息之后,我们就可以通过PB的注册表写入函数来实现数据源的配置了.PB的注册函数为RegistrySet(),其语法格式如下所示:语法:RegistrySet ( key, valuename, valuetype, value )参数:key:string类型,指定键名;valuename:string类型,指定要访问值的名称。
pb中odbc建立方法
pb中odbc建立方法下面以Powerbuilder内置的Sybase SQL Anywhere5.0数据库为例介绍ODBC的代码配置方法。
1、找出数据库驱动程序及相关文件首先找到相应的数据库驱动程序,这些文件可以在注册表的HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI下相应键中找到。
如Sybase SQL Anywhere5.0为dbeng50.EXE,WOD50T.DLL,以及一些其他相关的动态链接库,此例中为Dbl50t.dll,Wl50ent.dll,Wtr50t.dll,Wodbc.gid,Wtr50t.dll。
这些文件必须与最终的可执行程序一起安装到用户的计算机上,可以与应用程序放在一起,也可以放在一个特定的目录下(本例为Windows 的system目录下)。
在调试时可先将这些文件复制到指定的目录下。
2、在程序中用代码配置ODBC在应用的open事件中对ODBC配置的代码如下:Ulong ul_numIntanswer,answer1,answer2,answer3,answer4,answer5,ansapp String ls_driver,ls_start,ls_location,apppath,db_path,odbcstr //获取操作系统的system目录,并保存到ls_location变量answer=RegistryGet(“KYEY_LOCAL_MACHINE\Software\Mi crosoft\Windows\CurrentVersion\Setup”,”SysDir”,RegString!l s_location)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法获取Windows的系统目录,系统统将终止运行!’,Stopsign!)RETURNEND IF//判断Sybase SQL Anywhere5.0的驱动程序是否正确安装ls_driver=ls_location+’\WOD50T.DLL’ls_start=ls_location+’\dbeng50.EXE’IF NOT (FileExists(ls_driver) AND FileExists(ls_start)) THENMessagebox(‘错误’,’系统中没有安装SQL Anywhere的驱动程序,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC\ODBCINST.INI\ODBC DRIVERSanswer=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\O DBC\ODBCINST.INI\ODBCDRIVER’,’Sybase SQL Anywhere 5.0’,RegString!,’Installed’)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC DRIVERS,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC\ODBCINST.INIanswer1=RegistrySet(‘ HKEY_LOCAL_MAC HINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’CPTimeout’,RegString!,’not pooled’)answer2=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\ ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’Driver’,RegString!,ls_driver)answer3=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\ ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’Setup’,RegString!,ls_driver)IF answer1=-1 OR answer2=-1 OR answer3=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBCINST.INI,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC DATA SOURCE名称(anysql为数据源名)answer=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\O DBC\ODBCINST.INI\ODBC Data Sources’,’anysql’,RegString!,’Sybase SQL Anywhere 5.0’)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC DATA SOURCE名称,系统将终止运行!’,StopSign!)RETURNEND IF//获取应用程序的安装路径(ybinput为应用程序安装到用户计算机上后在注册表中注册的应用程序名,yibiao.db为应用程序的数据库名,与应用程序在同一目录下,anysql为数据源名)ansapp=RegistryGet(“KYEY_LOCAL_MACHINE\Software\Mi crosoft\Windows\CurrentVersion\AppPaths\ybinput”,”Path”,RegString!app_path)IF ansapp=-1 THENMessagebox(‘错误’,’应用程序无法获取安装路径名,系统将终止运行!’,StopSign!)RETURNELSEdb_path=app_path+’yibiao.db’END IF//设置ODBC.INI的细节answer1=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’driver’,RegString!,ls_driver)answer2=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’start’,RegString!,ls_start)answer3=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’autostop’,RegString!,’yes’)answer4=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’DataBaseFile’,RegString!,db_path) answer5=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’DataBaseName’,RegString!,’yibiao’) IF answer1=-1 OR answer2=-1 OR answer3=-1 OR answer4=-1 OR answer5=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC.INI细节,系统将终止运行!’,StopSign!)RETURNEND IFodbcstr=’dsn=anysql;databasename=yibiao;database file=’+db_pathsqlca.dbms=’odbc’sqlca.databse=’yibiao’sqlca.dbparm=”connectstring=’”+odbcstr+”;uid=dba; pwd=sql’”connect using sqlca;open(w_main)。
sqlserver opendatasource 调用函数
sqlserver opendatasource 调用函数摘要:1.SQL Server 简介2.开放数据源的定义和作用3.opendatasource 函数的使用方法4.函数调用示例5.函数的返回值和错误处理正文:1.SQL Server 简介SQL Server 是由Microsoft 开发和推广的关系数据库管理系统。
它可以在多种平台上运行,支持数据存储、查询和更新等操作,被广泛应用于企业级数据管理。
2.开放数据源的定义和作用开放数据源是一种数据库连接方式,允许外部应用程序或服务访问数据库中的数据。
这种方式可以提高数据交互性和可操作性,方便不同系统之间的数据共享和交换。
3.opendatasource 函数的使用方法在SQL Server 中,opendatasource 函数用于建立与开放数据源的连接。
其使用方法如下:```OPENDATASOURCE ( "datasource_name", "username", "password" ) ```其中,"datasource_name"为数据源的名称,"username"和"password"分别为访问数据源的用户名和密码。
4.函数调用示例假设我们有一个名为“my_datasource”的数据源,用户名为“admin”,密码为“123456”,则可以使用以下代码调用opendatasource 函数:```DECLARE @datasource_name VARCHAR(50) = "my_datasource"DECLARE @username VARCHAR(50) = "admin"DECLARE @password VARCHAR(50) = "123456"OPENDATASOURCE(@datasource_name, @username, @password) ```5.函数的返回值和错误处理opendatasource 函数的返回值为一个逻辑值,表示连接是否成功建立。
在PowerBuilder中连接SQL Server数据库的方法和技巧的研究报告
在PowerBuilder中连接SQL Server数据库的方法和技巧的研究报告PowerBuilder是一种易于使用的集成开发环境(IDE),它具有编写Windows应用程序所需的一切东西。
在PowerBuilder 中,连接SQL Server数据库是一种非常常见的任务,本文将介绍PowerBuilder中连接SQL Server数据库的方法和技巧。
SQL Server中连接数据库的方法首先,我们需要准备好一些必要的信息,如服务器名称、数据库名称、ID和密码等。
接下来,我们可以通过以下步骤连接数据库:1. 打开PowerBuilder IDE,并选择“打开一个项目”或“新建一个项目”。
2. 在打开的项目中,选择“打开一个对象”或“新建一个对象”。
3. 选择“数据库连接”或“数据窗口连接”选项。
4. 输入服务器名称和数据库名称,并选择正确的身份验证模式(本地或远程)。
5. 输入正确的ID和密码,并点击“测试连接”按钮。
6. 成功测试连接后,可以单击“确认”按钮,保存连接参数。
7. 在需要使用数据库的页面中,选择创建新的数据对象或使用现有的数据对象,并进行数据绑定。
PowerBuilder中连接SQL Server数据库的技巧在连接SQL Server数据库时,以下技巧可能会帮助我们更轻松地完成工作:1. 使用ODBC驱动程序:在连接SQL Server数据库时,使用ODBC驱动程序可以提供更高的灵活性和性能。
我们可以通过ODBC数据源管理员配置和测试ODBC连接属性。
2. 将连接参数保存在INI文件中:我们可以将连接参数保存在INI文件中,以便以后重新连接时不必输入相同的信息。
3. 使用事务:在PowerBuilder应用程序中,事务可以确保数据库操作的稳定性。
我们可以使用BEGIN TRANSACTION和ROLLBACK TRANSACTION语句来实现事务。
4. 使用DataWindow对象:PowerBuilder的DataWindow对象可以方便地展示数据库中的信息,并提供了小计、总计、分页和排序功能。
在PowerBuilder程序中实现ODBC数据源的添加
在PowerBuilder程序中实现ODBC数据源的添加(深圳:独孤求败 2003-05-16)思路:主要是利用PB对注册表操作函数RegistryGet()和RegistrySet(),这两个函数以及其他注册表函数在PB的帮助里都有详细说明。
再就是利用PB的ProfileString()函数读取INI文件中预先定义好的参数。
写注册表的源程序:string ls_sys[],ls_driver[],st_driver,st_pathinteger li_rtnls_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_versionls_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 THENmessagebox("错误","未安装Sybase SQL Anywhere 5.0 !",information!,ok!)RETURNEND IFli_rtn = RegistryGet(ls_sys[2], "InstPath", RegString!, st_path)IF li_rtn = -1 THENmessagebox("错误","读取安装路径出错!",information!,ok!)RETURNEND IFstring envfile,ls_source[],ls_drivepath,ls_tempinteger ienvfile="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 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!)RETURNEND IFls_sys[4]=ls_sys[4] + "\" + ls_source[1]li_rtn=RegistrySet(ls_sys[4], "AutoStop" , RegString!, ls_source[2])IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!)RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "DatabaseFile" , RegString!, st_path+"\"+ls_source[3]) IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!) RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "DatabaseName" , RegString!, ls_source[4]) IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!) RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "Description" , RegString!, ls_source[5]) IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错?!",information!,ok!) RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "Driver" , RegString!, st_driver)IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!) RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "PWD" , RegString!, ls_source[7])IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!) RETURNEND IFls_temp=st_driveri=pos(ls_temp,"\")do while i>0ls_drivepath=ls_drivepath+left(ls_temp,i)ls_temp=right(ls_temp,len(ls_temp)-i)i=pos(ls_temp,"\")loopli_rtn=RegistrySet(ls_sys[4], "Start" , RegString!, ls_drivepath+ls_source[8]) IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!)RETURNEND IFli_rtn=RegistrySet(ls_sys[4], "UID" , RegString!, ls_source[9])IF li_rtn = -1 THENmessagebox("错误","读取系统文件或写注册表出错!",information!,ok!)RETURNEND IFregedit.ini文件格式如下:[INI]AutoStop=yesDatabaseFile=Psdemodb.dbDatabaseName=仓储管理系统Description=clDriver=PWD=sqlStart=dbeng50.exeUID=dba备注:程序中ls_sys[2]变量代表的注册表键值是我通过安装程序制作工具自动生成的,每个人使用的制作安装程序的工具不同,这个键值也许不尽相同。
通过pb连接orcale数据库
PB如何连接Oracle数据库在PB中,你只要通过DATABASE选项设置一下你的服务名,用户名,密码就可以连接上的当然,你的服务名,用户名,密码你先要在NET ASSISANT中配置好,保证你的连接是正常的,你就可以连接上你的ORACLE了,在开发的时候,你就要直接设置SQLCA的连接属性了:if sqlca.of_logon("dbserver.ini", "Database", '') = -1 thenMessageBox('提示信息','数据库连接失败,请检查数据库连接配置!!')Close(THIS)return// 1连接成功,-1连接失败END IFSQLCA是一个用户定义对象(USER OBJECT),它的OF_LOGON 函数如下:string ls_src,ls_destif Len(as_inifile) > 0 then // get information from fileis_idheader = ProfileString(as_inifile, "Server", "id_head", "TCH")This.DBMS = ProfileString(as_inifile, as_section, "DBMS", "ODBC")This.ServerName = ProfileString(as_inifile, as_section, "Server", "")This.Database = ProfileString(as_inifile, as_section, "Database", "") This.LogID = ProfileString(as_inifile, as_section, "LogID", "sa")This.LogPass = ProfileString(as_inifile, as_section, "LogPass", "811811")This.DBParm = ProfileString(as_inifile, as_section, "DBParm", "")if This.LogPass <> "811811" thenf_decrypt(This.LogPass, This.LogPass)end ifif Len(as_other) > 0 thenif Not Match(Upper(This.DBParm), " +HOST *=") tThis.DBParm = This.DBParm + " host='" + as_ot her + "'"end ifend ifelse // get information from parameteruo_token luo_tokenluo_token.of_setseparator("~t")This.DBMS = luo_token.of_getfirsttoken(as_other)This.Database = luo_token.of_getnexttoken()This.ServerName = luo_token.of_getnexttoken()This.LogID = luo_token.of_getnexttoken()This.LogPass = luo_token.of_getnexttoken()This.Lock = luo_token.of_getnexttoken()This.DBParm = luo_token.of_getnexttoken()luo_token.of_setseparator("")end ifif Match(Upper(This.DBParm), " +PWENCRYPT *=") tLong ll_posll_pos = Pos(Upper(This.DBParm), "PWENCRYPT") This.DBParm = Replace(This.DBParm, ll_pos, 9, "Encr ypt")end ifSetPointer (HourGlass!)Connect Using This;SetPointer (Arrow!)This.LogPass = ""if This.SQLCode <> 0 thenThis.of_error(f_select_message("不能连接数据库;Can't connect database"))return -1elsechoose case Upper(Left(This.DBMS, 3))case "ODB"il_dbtype = DB_ODBCcase "MSS"il_dbtype = DB_SQLSERVERcase "O73", "O84"il_dbtype = DB_ORACLEexecute immediate "alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'" using this;case "SYC"il_dbtype = DB_SYBASEcase elseil_dbtype = DB_UNKNOWNend chooseend ifil_spid = of_getspid()il_id = 0This.Autocommit = Falsereturn 1PB如何连接Oracle数据库(ODBC)作为一个优秀的客户端开发工具,PowerBuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过ODBC或者PowerBuilder自带的DB Profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是PowerBuilder本身的原因,比如在安装PowerBuilder时的选项、ODBC的版本之类;也可能是在安装客户端的Oracle、Sybase、Informix、SQL Server等软件上的问题,下面就从最根本的ODBC配置开始,教你一步步如何连接上数据库。
PB自动注册ODBC数据连接
pb6.5下自动注册odbc数据源 ——————————————————————————————―――――――——――――――――――功能: 1 、pb6.5下自动注册odbc数据源;2 、自动获取程序或数据库目录;3 、不安装Sql anywhere 7.0 直连//获取程序所在目录String ls_curdirls_curdir=Space(256)//为字符缓冲区开辟内存空间GetCurrentDirectoryA(256,ls_curdir)ulong ul_numInt Answer,Answer1,Answer2,Answer3,Answer4,Answer5,Answer6,Answer7,ansApp stringls_driver,ls_start,ls_location,apppath,db_path,db_name,ODBCStr,ds_name,ls_ dbpath//设置Adaptive Server Anywhere 7.0的驱动程序路径ls_Location =ls_curdirls_dbpath=ls_curdir+"\data\yingxiao.db"//判断Adaptive Server Anywhere 7.0的驱动程序是否正确安装ls_Driver=ls_Location+"\dbodbc7.dll"ls_Start=ls_Location+"\dbeng7.exe"//IF Not (FileExists(ls_Driver) AND FileExists(ls_Start)) Then//MessageBox("错误!","系统中没有安装Adaptive Server Anywhere 7.0"+&//"的驱动程序,系统将终止运行!",StopSign!)//Return//End IF//设置ODBC\ODBCINST.INI\ODBC DRIVERSAnswer=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI"+& "\ODBC Drivers","Adaptive Server Anywhere 7.0", RegString!, "Installed") IF Answer = -1 ThenMessageBox("错误!","应用程序无法设置ODBC\ODBCINST.INI\"+&"ODBC DRIVERS,系统将终止运行",Information!)ReturnEnd if//设置ODBC\ODBCINST.INI\Answer1=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST."+& "Adaptive Server Anywhere 7.0", "CPTimeout", RegString!, "not pooled") Answer2=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST."+&"INI\Adaptive Server Anywhere 7.0", "Driver", RegString!,ls_Driver) Answer3=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST."+&"INI\Adaptive Server Anywhere 7.0", "Setup", RegString!,ls_Driver)IF Answer1 = -1 OR Answer2 = -1 OR Answer3 = -1 ThenMessageBox("错误!","应用程序无法设置ODBC\ODBCINST.INI,"+&"系统将终止运行!",Information!)//程序中不折行ReturnEnd ifdb_path = ""+ls_dbpath+""//设置数据库路径及文件名db_name = "yingxiao" //设置数据库名称ds_name = "yingxiao" //设置ODBC数据源名//设置ODBC DATA SOURCE名称Answer=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+& "ODBC Data Sources", ds_name, RegString!, "Adaptive Server Anywhere 7.0") Answer1=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+&ds_name,"driver", Regstring!, ls_Driver)Answer2=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+&ds_name,"start", Regstring!, ls_Start)Answer3=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+&ds_name,"autostop", Regstring!, "yes")Answer4=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+& ds_name,"DataBaseFile", Regstring!, db_path)Answer5=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+& ds_name,"DataBaseName", Regstring!, db_name)Answer6=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+& ds_name,"PWD", Regstring!, "sql")Answer7=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.ini\"+& ds_name,"UID", Regstring!, "dba")IF Answer = -1 ThenMessageBox("错误!","应用程序无法设置ODBC DATA SOURCE名称,"+& "系统将终止运行!",Information!) //程序中不折行ReturnEnd if//设置ODBC.ini细节Answer1=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+& ds_name,"driver", Regstring!, ls_Driver)Answer2=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+& ds_name,"start", Regstring!, ls_Start)Answer3=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+& ds_name,"autostop", Regstring!, "yes")Answer4=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+ds_name,& "DataBaseFile", Regstring!, db_path)Answer5=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+ds_name,& "DataBaseName", Regstring!, db_name)Answer6=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+ds_name,& "PWD", Regstring!, "sql")Answer7=RegistrySet("HKEY_current_user\software\odbc\odbc.ini\"+ds_name,& "UID", Regstring!, "dba")IF Answer1 = -1 OR Answer2 = -1 OR Answer3 = -1 OR &Answer4 = -1 OR Answer5 = -1 OR Answer6 = -1 OR Answer7 = -1 Then MessageBox("错误!","应用程序无法设置ODBC.INI细节,"+&"系统将终止运行!",Information!)ReturnEnd ifodbcstr='dsn=' + ds_name +';databasename=' + db_name + ';databasefile=' + db_pathSQLCA.DBMS="ODBC"SQLCA.Database=db_nameSQLCA.DbParm="connectstring='" + odbcstr+";uid=dba;pwd=sql'"open(w_splash)//sleep(2)connect using sqlca;IF SQLCA.SQLCode = -1 THENMessageBox("数据库连接失败", "不能连接到数据库上,请检查。
