现在的位置: 首页 > 综合 > 正文

PB与各种数据库连接

2013年01月12日 ⁄ 综合 ⁄ 共 5579字 ⁄ 字号 评论关闭

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----FILE EDIT 可以生成(编辑)INI文件。最直接就是工具栏中的EDIT图标。
2、机器生成代码是:点DATABASE图标-----选择连接方式。如:选 MSS MICROSOFT SQL SERVER 右键-NEW PROFILE 按要求填定一些参数后在--PREVIEW中可以看到代码,把它复制到INI文件中就行了。

3.编程经验--PB数据库连接

作者:郭洪建 无法确定网上来源,如有准确首发,请与本站联系

  通过这些年的信息系统开发经验,使我对POWERBUILDER的理解更进一步,最近在开发某子系统模块时,遇到了一个奇怪的问题,这里给大家介绍一下.

  通常在使用PB和数据库管理系统(DBMS)连接时,使用两种方式:
  一、开放数据源接口(ODBC)连接

  ODBC是通过支持美国微软公司开放服务结构(WOSA,Windows Open Services Architecture)中的一部分.在PB 中通过配置 SQLCA.DBMS=‘ODBC’对象的属性可使应用程序通过ODBC连接到数据库。
  ODBC的具体配置包含了数据源、驱动程序类型、缓冲池等各种细节参数。
例子:
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm="ConnectString='DSN=xxx_dsn;UID=xxx;PWD="',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"

  二、专用数据库接口

  每个数据库管理系统(DBMS)均提供相应的客户端驱动,为了更好的服务于数据库。
  在这里我们使用的是Microsoft sqlserver 2000 的客户端程序。通过设置 SQLCA.DBMS ="MSS Microsoft SQL Server" 使客户端通过专用数据库接口连接到数据库。
   该类接口的参数配置除了服务器名、数据库名、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= "CommitOnDisconnect='No'"
SQLCA.autocommit= false
以上介绍的是PB与数据库连接时常用的方法。

  往往根据不同的应用环境选择连接方式,
在单机环境下多采用的是ODBC连接,因为在发行环节上相对要容易些。在网络环境下多采用专用数据库连接,这样可以提高系统的可靠性与执行效率。专用数据
库的发行环节往往要配上相应DBMS客户端的动态连接库(DLL),并把它存放在应用程序当前路径,或存放在%SYSTEM%下面。
  我在开发中用到了对BLOB类型的数据进行存取,大家都知道POWERBUILDER
对BLOB字段的支持是有限的,每次只能处理32KB的数据块,如果一个文件大于32K必须编写相应的程序进行处理。当时的开发环境是
PWOERBUILDER 9.0 + MS SQL SERVER 2000 +WINDOWS2000 。
  当通过ODBC连接数据读取BLOB字段时,通过MESSAGEBOX弹出的字节数,观察到只要超过32K的文件出现,LEN(BLOB)就会出错,
始终返回是32K字节的长度。当时很令人费解,随即怀疑系统问题,检查病毒,重新安装相应的开发环境,结果依旧,这才怀疑到ODBC可能存在问题,因为微
软是问题专家,同时也是解决问题的专家。当通过SQLSERVER 专用接口连接后,一切正常。由此证明了ODBC
与专用数据库接口之间存在着一定的问题。
  由此可说明各种同类技术之间的细微差别,可能会给我们带来意想不到的问题。在开发时还需谨慎、全面的考虑所用技术的可靠性。

PB与ASA数据库连接问题!

PB与ASA数据库连接问题!

一.连接步骤
1.添加数据源。WINDOWS98中----我的电脑---控制面版----ODBC数据源32位-----系统DSN---添加---选择你使用的数据库
2.在工具条上点击DB PROFILE 选择已建立好的数据库连接,单击EDIT在弹出的对话框中选PREVIEW里面就是连接数据库的语句,COPY就OK了。
二.DB_profile写法(以lin.com的tax例程为例)
tax.ini
[Database]
DBMS=ODBC
Database=test
DbParm=connectstring='dsn=sybase_lin;UID=dba;PWD=sql'
三.打包所需文件
四.容易出现的问题及解决方法
导致ASA数据库无法连接的问题有以下几种:
1、ODBC配置错误。没有配置数据源,数据库的用户名或口令错误等都会导致数据库无法连接。
解决的办法:检查数据源的配置,如果没有在ODBC中配置数据源则按照向导添加数据源即可;口令错误只需改为正确的即可。
2、连接时提示LOG文件错误。这样的问题大多出现在重装系统后、源码移植到其他系统、数据库文件路径改变之后。
解决的办法:在创建ASA数据库的时候不创建LOG文件,如果已经创建了LOG文件则可以利用PB自带的工具Sybase central来去掉LOG文件和数据库文件的关联。操作步骤如下:
          a)启动Sybase central在左边的树型目录中选择Utilities;
          b)双击右边出现的条目中的change log file settings,直接next;
          c)点Browse选择需要去除log文件的数据库文件,选好后next;
          d)这里你会看到一些数据库的信息,log文件名,文件大小等。next;
          e)去掉Maintin the following transaction log file前面的对勾,Finish;
          f)配置ODBC连接数据库就可以了。
3、数据库文件损坏。此类错误一般不常见,可能由于病毒破坏或误操作引起。
解决的办法:如果以前有备份用备份文件覆盖原文件即可,如果没有备份文件就只能重新建库了!
在pb中通过OLE DB连接到ASA数据库的步骤如下:

在命令提示符下键入如下命令,启动 ASADEMO:
    dbsrv7 asademo -x tcpip -n asademo

("asademo" - 你选择运行的数据库. 确定你没有正在运行一个同名的数据库,否则会出错)

有两个方法通过 OLE DB 连接到 ASA Server:

1) OLE DB/ODBC bridge
对于这种连接,你必须在数据库参数中,指定有效的 ODBC 数据源,连接的脚本如下:
    // Profile asa_oledb
    SQLCA.DBMS = "OLE DB"
    SQLCA.LogPass = "sql"
    SQLCA.LogId = "dba"
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "PROVIDER='ASAProv',DATASOURCE='asa'"

2) OLE DB (不需要配置 ODBC)
你可以通过一个扩展名为.udl的单独的文件,提供连接信息,在OLE DB中访问数据.这个文件与 Microsoft DataLink (.udl) file 类似. 你必须在系统中安装 Datalink API 以便于创建和使用 .udl 文件.

创建 .udl文件的方法:
在当前目录里的空白处单击鼠标右键,选择新建文件,选择 Microsoft Data Link.如果没有创建 Microsoft Data
Link 的选项,需要创建一个文本文件,然后更改扩展名为 .udl.双击这个文件,添加连接信息.详情请访问msdn.microsoft.com
搜索 Data Link(此处原文有乱码,具体内容不详).

在pb中使用 .udl 文件时,要确认在数据库中已经创建了 Catalog Tables
(由pbcat...名字开头,然后用这几张表存放一些PB中的信息,如果这几张表无法创建,就会出现出错信息).你可以通过连接到系统中已有的ODBC
数据源. 如果这些表不存在,就会提示 Catalog Tables没有被创建.

用以下信息来创建.udl文件:
    Provider Tab:
        Select "Adaptive Server Anywhere Provider"
    Connection Tab:
        Location: eng=asademo;dbn=asademo;Links=TCPIP{};
        Select radio button for

pb连接MS SQL Server问题!

一.连接步骤
1)服务器安装SQL Server并启动,创建数据库。
2)客户机安装SQL Server客户端。
3)启动PB,配置数据源描述(通过直连接口,不建议用ODBC)。
4)连接。
二.DB_profile的写法

在ini文件里设置
[Database]
DBMS=MSS Microsoft SQL Server 6.x
Database=databasename
UserId=
LogID=
DatabasePassword=
LogPass=
ServerName=
AutoCommit=False
在程序里用profilestring读取

附加资料:ms sql server 配置文件设置
ms sql server 配置文件设置:
dbms="mss"//只须在*.ini文件中用这个代码便告诉pb使用的ms sql server
Database:所用数据库
LogId:sql server的登陆账号
LogPass=口令
servername:允许数据库服务器连接的计算机名
autocommit:控制pb 是工作在事务处理范围内还是工作在事务处理范围外
dbparm:dbms的专用连接参数
以下参数:
language:在显示错误消息和日期格式时指定要使用的语言,在服务器上必须设置该直.
lock:事务处理隔离层
log:文本和图像数据的更新是否应该纪录到事务日志中.
systemprocs:系统存储过程和用户定义的存储过程是否显示在各种各样的pb画板中.
pbcatalogowner:pb存储中表的缺省者.
async:允许在服务器上进行同步操作.0:同步,1:异步
dbgettime:当async=1时,使用该参数设置用户在检索行时pb等待来自pb的响应的秒数.
cursorlock:release和cursorscroll参数一起使用可设置光标的锁定选项.lock,opt,optval,readonly
cursorscroll:设置光标的滚动选项.
staticbind:控制pb是否在检索数据前获取dbms中的结果集描述.
dbtextlimit:控制返回的文本字段的最大长度而不用将文本作为二进制大型数据对象来处理.
appname:设置连接时所使用的应用程序名.
host:设置连接似的工作站名.
packetsize:设置使服务器向pb传送数据时所设置的包大小.
secure:设置是否想使用winnt集成逻辑安全性和安全sql server连接 缺省0使用标准安全性,1集成安全性.

抱歉!评论已关闭.