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的配置!

难者不会,会者不难,这个日常总结汇总,分析提炼,很重要,为我所用,能够快速及时的解决现有问题,就是最好的技术,其它高深莫测,用不到,玄乎的东西就不要浪费自己的精力了,留着精力寻找快乐和生活的动力。

(0)

相关推荐

  • SQL系统学习笔记之数据库概述与SQL简介

    数据库简介 数据库(Database,DB):通过计算机加工而成的可以进行高效访问的数据集合 数据库管理系统(Database Management System,DBMS):用来管理数据库的计算机系 ...

  • Pb的事务处理机制

    一.数据库的事务处理简介 在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态.为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元,当它全部完成时,数据的一致性可以 ...

  • (1条消息) python3连接Oracle数据库

    今天有了Oracle环境,又捣鼓一遍怎么连接,比上次有点收获,上次比较顺利,照着网上别人的博客基本就连接成功了,今天遇到了一些坑,当然这些坑的帮助也很大. 首先我安装的python是3.7版本,32位 ...

  • oracle 大量连接导致数据库不能登录

    系统遇到过几次这种问题,一个系统申请的session数过大,导致数据库进程数满,无法连接的问题. pl sql develope 报的错误是:ORA-12170:TNS:链接超时 oracle用户登录 ...

  • 2021年4月Oracle数据库补丁分析报告

    引言 编写目的 编写此文档为了更好地指导Oracle补丁安装工作,细化工作任务,规范安装升级操作. 背景 Oracle对于其产品每个季度发行一次安全补丁包CPU (Critical Patch Upd ...

  • oracle数据库整理笔记

    表格:infos1  infos2 insert into infos1(stuid,stuname,gender,age,seat,stuaddress,classno) values(2,'张三' ...

  • Oracle数据库创建用户名实例过程

    Oracle数据库创建用户名实例过程

  • Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库

    本文主要涉及: VBA中的SQL Server环境配置 VBA连接SQL Server数据库 VBA读写SQL Server数据 如何安装SQL Client 系统环境: Windows 7 64bi ...

  • jmeter压测学习18-JDBC配置连接mysql数据库

    前言 使用jmeter压测接口的时候,有时候需要批量造数据,需使用jmeter连数据库造对应的测试数据. 或者测试结束后,对测试的数据还原,删掉一些垃圾数据,都会用到连接数据库执行sql的操作. JD ...

  • 【总结】Oracle数据库 查看表空间和增加表空间

    一.Oracle查看 表空间 的名称及其大小 查看 表空间的名称及其大小的SQL语句: ? 1 2 3 4 select t1.tablespace_name,round(sum(bytes/(102 ...

  • 蓝牙无法连接?试试这些办法吧!

    亲爱的用户您好,这篇文章我们来讲下蓝牙设备无法连接时,如何处理(<ゝω・)☆ [如果您机器的现象是找不到蓝牙图标,或蓝牙图标显示异常(比如打红叉,惊叹号等现象)请直接操作第三步解决方案]  一. ...