Pb7.0连接Oracle数据库一般办法
首先需要服务器端应用程序和数据库程序安装,使用正常,也就是ERP等应用程序在电脑上运行正常。如图,
然后安装powerbuilder 7.0,设置如图,正常,同时Oracle数据库监听端程序运行启动,运行正常。这样就可以pb7.0连接数据库,进行select语句查询访问,进行最牛逼的添加删除修改。这个是直接连接Oracle数据库进行的修改,没有任何的记录和备案。所以非常的恐怖和危险,修改之后不留痕迹,神不知鬼不觉。
这个是连接数据库的监听程序
这个是C/S架构的ERP程序
数据库端也有服务器运行程序
下图是pb7.0的程序设置
设置好后,就可以打开链接数据库了,使用select语句查询里面的表文件,而且有最高权限修哦。吓人
所以一般开发者都在前台设置修改删除等操作权限,这样前台操作的记录都能查到,有踪迹可寻。比较安全可靠。不建议直接连接数据库修改内容。
应用有用的资料
简单的方法,用数据窗口的优势
dw_1.dataobject = 'dw_ypbm'
dw_1.settransobject(sqlca)
dw_1.retrieve( )
if dw_1.SaveAs("nh_ypbm.txt",text!, false) = 1 then
messagebox("提示","nh_ypbm.txt导出成功")
end if
将表导出来
用 dw_1.ImportFile ( ls_path ) 可以还原,很省事
几个与PB连接数据库相关的问题
1.Power script 语言里的事务处理对象怎么理解
PowerBuilder程序与数据库之间传递信息的一个结构变量,共有15个成员.你可以详细列表它的所有成员看看它的组成.PB的应用程序会初始化一个全局的结构体变量,SQLCA,当然你也可以自定义一个自己的事务对象.
1 DBMS string 所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC。
2 Database string 要连接的数据库名字。
3 UserID string 连接数据库所用的用户名。有的DBMS不需要此项。
4 DBPass string 用户连接数据库的口令。
5 Lock string 这是数据库的保护级别,一般不必给出。
6 LogID string 登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。
7 LogPass string 登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。
8 ServerName string 数据库服务器名。
9 AutoCommit boolean 指定是否将数据库设置成自动提交所有事务。默认是False,也就是说,必须在应用程序中进行事务管理,并在适当的时候对数据库提交事务。如果选择True,则每个事务都由系统自动提交。
10 DBParm string 用于向数据库传递特殊信息的属性。
11 SQLCode long 指示最近一次SQL操作失败或成功。它的取值为:返回结果 0 无错误。 -1 出现一个错误。 100 没有检索到数据。
12 SQLNRows long 最近一次SQL操作影响的行数,数据库不同其含义也不同。
13 SQLDBCode long 数据库错误代码。不同的数据库的含义不同。
14 SQLErrText string 相应于SQLDBCode属性中错误码的文字说明。
15 SQLReturnData string 返回DBMS执行SQL的附加信息,不同的DBMS其值不同。
2.我常见到做好的PB程序使用.ini文件来控制与数据库连接,可以方便的进行应用程序移植只需修改其中与数据库连接参数即可,我想问这些.ini文件只能使用手工编写吗,我见到很多.ini文件参数极多不象手写好象是机器生成的,不知道如何生成啊?请大家指教
1、其实PB中在新建---点TOOL----FILEEDIT 可以生成(编辑)INI文件。最直接就是工具栏中的EDIT图标。
2、机器生成代码是:点DATABASE图标-----选择连接方式。如:选 MSSMICROSOFT SQL SERVER 右键-NEW PROFILE 按要求填定一些参数后在--PREVIEW中可以看到代码,把它复制到INI文件中就行了。
3.编程经验--PB数据库连接
通过这些年的信息系统开发经验,使我对POWERBUILDER的理解更进一步,最近在开发某子系统模块时,遇到了一个奇怪的问题,这里给大家介绍一下.
通常在使用PB和数据库管理系统(DBMS)连接时,使用两种方式:
一、开放数据源接口(ODBC)连接
ODBC是通过支持美国微软公司开放服务结构(WOSA,Windows OpenServices Architecture)中的一部分.在PB 中通过配置 SQLCA.DBMS=‘ODBC’对象的属性可使应用程序通过ODBC连接到数据库。
ODBC的具体配置包含了数据源、驱动程序类型、缓冲池等各种细节参数。
例子:
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm="C,C"
PWD="',C"
二、专用数据库接口
每个数据库管理系统(DBMS)均提供相应的客户端驱动,为了更好的服务于数据库。
在这里我们使用的是Microsoftsqlserver 2000 的客户端程序。通过设置 SQLCA.DBMS ="MSS Microsoft SQLServer" 使客户端通过专用数据库接口连接到数据库。
该类接口的参数配置除了服务器名、数据库名、LogId、LogPass外还包含了连接协议等用户验证方式等,可通过服务器端或客户端的配置程序进行配置。
SQLCA.dbms= "MSS Microsoft SQL Server" //接口类型
SQLCA.database= "master" //数据库
SQLCA.userid= ""
SQLCA.dbpass= ""
SQLCA.logid= "sa"
SQLCA.logpass= "xxxx"
SQLCA.serverName= ".\xxx"//服务器名
SQLCA.dbparm= "Commit"
SQLCA.autocommit= false
以上介绍的是PB与数据库连接时常用的方法。
往往根据不同的应用环境选择连接方式, 在单机环境下多采用的是ODBC连接,因为在发行环节上相对要容易些。在网络环境下多采用专用数据库连接,这样可以提高系统的可靠性与执行效率。专用数据库的发行环节往往要配上相应DBMS客户端的动态连接库(DLL),并把它.
PowerBuilder与Oracle的连接
假定已安装Oracle客户端应用程序。可用Sqlplus或Tnsping等是否能连接到Oracle数据库,确定在SQLNET配置文件中使用的数据库别名(DatabaseAlias,又称服务器名,ServerName)。如有疑问,可在Oracle客户端程序目录下tnsname.ora文件中找到。另外保证搜索路径已包括SQLNET应用程序的安装目录(如C:\ORAWIN95\BIN)。
进入PB的DatabaseProfiles画笔,可看到所有已安装的数据库接口(PB6.0缺省安装的是Oracle7.3版的接口,如使用低版本的Oracle,需在安装时指定),选择“O73Oracle 7.3”,点击“New”按钮,进入Database ProfileSetup对话框。在“Connection”页输入下列信息:
Profile Name:为该Database Profile起一个有意义的名称;
Server:TNS:ServerName,其中ServerName为上述数据库别名(服务器名),如@TNS:ORA73;
Login ID:Oracle数据库中实际的用户名,由于PB初次连接到数据库时要自动建立五个系统表(PowerBuilderCatalog Table;SCATTBL,PBCATCOL,PBCATEDT,PBCATFMT,PBCATVLD,存储表的扩展属性),因此第一个连接到Oracle的用户必须具有建表、给PUBLIC角色授权等权限。例如可用SYSTEM用户进行第一次连接,此后的连接对用户则无特殊要求;
Password:该用户的口令。
设置上述内容后,即可连上Oracle。为优化数据库连接,还可设置下列选项:
Prompt for Database Information:连接时是否提示用户输入用户名和口令;
Generate Trace:启动DB跟踪工具,跟踪连接;
Thread Safe:开发需要多线程环境支持的分布式应用时,选择该项。缺省为未选,适用于非分布应用;
PBDBMS:与存储过程调用方式有关的参数。Oracle为7.2或更高版本时,清除该选项,此时带IN OUT参数的存储过程可作为数据窗口数据源。7.2版本以下,选择该项,调用PBDBMS.Put-Line建立存储过程的SQL语句,缺省是选中;
Commit on Disconnect:断开连接时,指定提交或回退未提交的事务;
Case Sensitive:连接的Oracle服务器是否区分大小写。注意该项选中时,所有主键、包含主键的表名、外键须全为大写字符。
PowerBuilder Catalog Tables Owner:指定拥有PB系统表的用户,缺省为“SYSTEM”。如果要使用多种显示格式或有效性规则,可以在不同的用户下建立几套系统表;
Table Criteria:指定满足哪些条件的表、视图和同义词可在“Select Tables”对话框中显示出来。例如DEV用户下销售子系统的表都以SALE开头,则可以用SALE%、DEV、“TABLE”、“VIEW”指定只显示DEV用户以SALE开头的表和视图;
Asynchronous:选择该项,可在一个复杂的SQL语句执行过程中,返回第一行结果前,切换到其他操作;
Number of Seconds to Wait:若上一项选中,还可进一步通过该项指定检索数据时,等待数据库响应的时间;
Retrieve Blocking Factor:决定数据窗口对象一次可从数据库取出的记录数;
Number of SQL Staments Cached:PB可将数据窗口对象产生的SQL语句和嵌入式SQL语句保存在SQL语句缓冲区,该参数指定缓冲区为PB保留的SQL语句数目。该数值可由下式计算:SQLCache=服务器OPEN—CURSORS数-5(保留的游标数)-本连接预期使用的最大游标数;
Disable Bind:指定是否将输入变量与SQL语句绑定,此参数影响PB为数据窗口对象生成INSERT语句的方式;
Static Bind:数据窗口对象检索数据前是否检测SELECT语句的合法性;
在Syntax页,还可指定日期、时间的格式等。在Preview页可查看DatabaseProfile设置对应的PowerScript写法。
Oracle存储过程的使用
归纳起来PB6.0中调用Oracle存储过程有以下四种方法。
方法一:以关键字RPCFUNC声明存储过程;
方法二:以DECLAREPROCEDURE语句声明存储过程;
方法三:以动态SQL语句实现;
方法四:调用函数PBDBMS.Put-Line。
一般情况下,方法一能得到较好的运行效率和更完善的功能。因此推荐使用方法一。但是某些类型的存储过程只能使用其他方法。以下重点介绍方法一和方法二。
两种方法比较起来,有以下几点主要区别:
1)方法一适用于具有IN、OUT和IN OUT参数的存储过程,而方法二仅支持IN
PB10连接SQL Server的配置
可能初次使用pb10的朋友无法顺利连接到sqlserver,一方面没有了mssql server专用接口了,另一方面数据库管理系统(DBMS)换成了“OLEDB”,配置起来有点不顺手!下面就来介绍pb10中用OLE DB连接sql2000数据库。
在安装pb10的时候选择custom/full方式安装(默认的安装方式不会安装ole db接口),next-》如果你没有安装.net则不要选择列表中的ADO.net....项。一路next完成安装。
在数据库画板中找到OLEmicrosoft OLE DB项,在其上右键新建一个配置,在弹出的配置窗口中:
profile name:填写配置文件名 //任意即可
provider:选择数据库管理系统类型,这里选择“SQLOLEDB”项
data source:服务器名(和之前的版本不太一样)。可以在下拉列表中选择,也可以填入服务器名或IP地址如:127.0.0.1等。如果上面的provider不是“SQLOLEDB”则此下拉列表中可能没有选项。
user ID:用户名。我的用户名是默认的sa
password:对应上面user ID的密码,我的密码是空的,所以不填。
到这里你就可以顺利的连接到sqlserver了。但是连接到哪个数据库呢?上面的参数都没有指明,我也找了半天。不要着急,在Extended里填入“database=数据库名” 就可以了。(不要引号)
最后的配置文件内容为:
// Profile his
SQLCA.DBMS = "OLE DB"
SQLCA.LogId = "sa" //我的用户名是sa
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='NETMANAGER',PROVIDERSTRING='database=zs'"//我的数据库名是:zs;datasource后面也可以是IP地址:DATASOURCE='127.0.0.1'
至此就完成了pb10下用OLE DB连接sqlserver的配置!
难者不会,会者不难,这个日常总结汇总,分析提炼,很重要,为我所用,能够快速及时的解决现有问题,就是最好的技术,其它高深莫测,用不到,玄乎的东西就不要浪费自己的精力了,留着精力寻找快乐和生活的动力。