PB与数据库的连接方法
轻松掌握PB中使用FoxPro数据库的方法

⼀、利⽤ODBC联接FoxPro数据库 在Power Builder中,直接访问FoxPro数据库只能通过ODBC⽅式。
在开发环境下,可以直接在PowerBar画板上配置ODBC,联接FoxPro数据库,⽅法如下:单击Configure ODBC⼯具钮在Installed Drivers⽬录框中选择:Microsoft Foxpro Driver (*.dbf) 单击“Create”按钮命名数据源名、选择版本取消“使⽤当前⼯作⽬录”选项单击选定⽬录,选择被联接数据库所在的⽬录确定退出。
通过ODBC⽅式联接的FoxPro的数据库,⼀定要满⾜FoxPro的数据库格式,即数据库⽂件结构必须是:“32字节⽂件描述若⼲个32字节的字段描述结构描述结束符(0D) 记录1,记录2,…… ⽂件结束符(1A)”。
由此看来,传统的DBF数据库⽂件均可通过该⽅式联接。
对于Visual FoxPro环境下建⽴的表(Table),其结构与传统的数据库结构是不同的,它在字段描述结束符(0D)与记录之间加上了⼆百多个字节的内容,但在未纳⼊VFP的数据库(Dbc)之前,其内容为“00”,此时仍可以通过这种⽅式联接,⼀旦纳⼊数据库中,该段字节已被填上了其它内容,⽆法再联接。
在Power Builder应⽤程序中,使⽤事务处理对象来联接数据库,这种事务处理对象,即有默认的SQLCA,⽤户也可以⾃⼰⽣成,以⽅便访问多个数据库。
在程序中使⽤事务处理对象时,⼀般必须先指明DBMS、DbParm两个属性,对于FoxPro数据库,还必须指明 Database、 userid、servername、⼏个属性,这⼀点是与访问其他类型的数据库不同的地⽅。
sqlca.dbms="ODBC" // 指定联接⽅式ODBC sqlca.database="D:\prg\pubdata" // 指定被联接数据库所在⽬录erid="public" // ⽤户识别号,都为 public sqlca.servername="FOXPRO" // 服务器名:均为FOXPROsqlca.dbparm="Connectstring=’DSN=tscxs’" //数据源名 connect using sqlca; // 实施联接 …… 通过对FoxPro数据库的联接,⽤户便可以在Power Builder开发环境下、应⽤程序中使⽤这些数据库,快速地开发出⾃⼰的信息管理系统,实现对这些数据库的维护与管理。
PB中用事物对象连接数据库的方法

应用程序与数据库的连接通过事务对象来完成,在建立连接前需要首先给事务对象的相关属性赋值,然后用嵌入式SQL语句CONNECT建立连接。
不同的数据库管理系统使用的事务对象属性也不尽相同。
如果应用程序只访问一个数据库,那么使用PowerBuilder的缺省事务对象SQLCA也就可以了。
SQLCA是个全局对象,在应用程序的任何地方都可以访问。
下面是使用SQLCA与ODBC数据源建立连接的简单示例://设置事务对象属性SQLCA.DBMS="ODBC"SQLCA.DBParm="ConnectString='DSN=Powersoft Demo DBV6;UID=dba;PWD=sql'"//与数据库连接CONNECT USING SQLCA;//检查连接是否成功If SQLCA.SQLCode<0 ThenMessageBox("连接失败",SQLCA.SQLErrText,Exclamation!) End If上面的示例中我们直接把连接参数写死在程序中,这种方式在应用程序需要访问其它数据库时就要修改代码,更合理的方式是利用PowerBuilder的初始化文件PB.INI,下面是更通用的代码:environment env// 保存环境信息string startupfile// 保存初始化文件名/* 得到环境信息*/IF ( GetEnvironment(env) <> 1 ) THENMessageBox( "系统出错", "得不到环境信息,~n终止应用 ..." )HALT //终止应用程序的执行END IF/* 根据当前使用的操作系统选择初始化文件*/CHOOSE CASE env.OSTypeCASE Windows!,WindowsNT!startupfile = "pb.ini"CASE Sol2!, AIX!, OSF1!, HPUX!startupfile = ".pb.ini"CASE Macintosh!startupfile = "PowerBuilder Preferences"CASE ELSEMessageBox( "系统出错", "未知的操作系统,~n终止应用..." )HALTEND CHOOSE/* 根据当前 PB.INI的设置值设置SQLCA属性*/SQLCA.DBMS= ProfileString (startupfile, "database", "dbms","")SQLCA.database = ProfileString (startupfile, "database","database","")erid = ProfileString (startupfile, "database", "userid","") SQLCA.dbpass = ProfileString (startupfile, "database", "dbpass","") SQLCA.logid = ProfileString (startupfile, "database", "logid","") SQLCA.logpass = ProfileString (startupfile, "database","LogPassWord", "")SQLCA.servername = ProfileString (startupfile, "database","servername", "")SQLCA.dbparm = ProfileString (startupfile, "database", "dbparm","") //与数据库连接CONNECT USING SQLCA;//检查连接是否成功If SQLCA.SQLCode<0 ThenMessageBox("连接失败",SQLCA.SQLErrText,Exclamation!) End If需要时,应用程序也可以创建新的事务对象,以适应同时连接到多个数据库管理系统的要求。
PB如何连接ORACLE数据库

PB如何连接ORACLE数据库如果你已经是个PowerBuilder高手,那么下面的东西对你来说毫无价值,你大可不必再看下去,如果你刚刚步入PowerBuilder的殿堂,那么下面的东西对你来说可能有点价值,你应该看一看。
作为一个优秀的客户端开发工具,PowerBuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过ODBC或者PowerBuilder自带的DB Profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是P owerBuilder本身的原因,比如在安装PowerBuilder时的选项、ODBC的版本之类;也可能是在安装客户端的Oracle、Sybase、Informix、SQL Server等软件上的问题,下面就从最根本的ODBC配置开始,教你一步步如何连接上数据库。
ODBC数据源的配置进入控制面板,打开ODBC数据源(32位),如图1所示,点击“ADD”按钮,进入OD BC数据源的配置面板,如图2所示:选择“Oracle ODBC Driver”一项,注意当前版本号为“8.00.0400”,如果你的操作系统中安装的是Oracle7,则相应的版本号会不同。
提醒一点:在Windows98操作系统上是无法安装Oracle8.0.4的(只能安装Oracle7.2.3),Oracle8.0.5则没有试过。
因而会有一些使用者在Windows98系统上无法正常配置ODBC数据源,因为Windows98本身自带的OD BC数据源已经比Oracle7数据源版本要高,无论你怎样配置ODBC,系统总会提示你要安装一个更高版本的Oracle,自然你就无法配置ODBC了,有一个解决方法就是用PB7第二张光盘上的ODBC安装程序覆盖系统中的ODBC,或者把你的操作系统改为Windows95/97算了。
然后进入“Oracle8 ODBC Driver Setup”设置,在“Data Source Name”一项中随便输入一个名字,在“Data Source Service Name”一栏中输入Oracle连接数据库的字符串名,这可以在你安装的Oracle目录中的Tnsnames.ora文件中查看到(Oracle7安装路径为“ORAWIN95\NETWORK\ ADMIN”;Oracle8安装路径为“ora win95\NET80\ADMIN”),或者你通过“SQL Net Easy Configuration”新添加一个数据库连接配置,将配置中的字符串填入即可,其他的就不必再填入,避免出现画蛇添足之错,反而连接不上数据库了。
PB中连接Access数据库的三种方法

PB中连接Access数据库的三种方法PB中连接Access数据库的三种方法方式一:SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='driver=Microsoft Access Driver (*.mdb);DBQ=c:\foodmart.mdb'"CONNECT;IF SQLCA.SQLCode <> 0 THENMessageBox("数据库连接失败","请与管理员联系。
错误号:" + String(SQLCA.SQLCode) + "~r~n错误原因:" + SQLCA.SQLErrText) RETURNelseMessageBox("数据库连接成功","现在进入系统... ...")end if方式二:SQLCA.DBMS = "OLE DB"SQLCA.AutoCommit = FalseSQLCA.DBParm = "PROVIDER='Microsoft.Jet.OLEDB.4.0',DATASOURCE='C:\foodm art.mdb'"CONNECT;方式三:建立DSN,通过ODBC连接。
这个就不用多说了。
例如:// Profile my_assSQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=my_ass'"catalog tables could not be created and are not available for use问题解决方法:这种情况多见于从SQL server 转到Access 数据库,用ODBC连接的情况把sqlserver数据库里的五个‘pb’字母开头的数据表导入到access数据库里去,再连接就不提示了关于动态注册ODBC数据源关于动态注册Access数据源//***********************************************// 函数名: gf_setodbc_access// 功能: 完成access数据源的注册功能// 输入参数:// as_database 数据库名// (即Access数据库文件名字,不含扩展名)// as_path 数据库文件所在的目录// 返回值:// true 表示自动配置成功// false 表示自动配置失败// 设计者: Adamswater// 完成时间: 2005年6月//***************************************************boolean lb_rtnstring ls_root,ls_root_dsn,ls_root_Jet,ls_root_Enginesinteger li_rtnstringls_dsnname,ls_dbfullname,ls_driver,temp,ls_version string ls_syspathenvironment envls_syspath = Space( 40 )//获得*作系统的目录GetSystemDirectoryA(ls_syspath,60)ls_driver = ls_syspath + "\odbcjt32.dll"lb_rtn = truels_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"//数据源名字为:文件名字+“_DT”ls_dsnname = as_database + "_DT"ls_root_dsn = ls_root + "\" + ls_dsnnamels_root_Engines = ls_root_dsn + "\" + "Engines"ls_root_Jet = ls_root_Engines + "\" + "Jet"ls_dbfullname = as_path + "\" + as_database + ".mdb"//注册数据源的名字li_rtn = registryset(ls_root,ls_dsnname,regstring!,"")if li_rtn= - 1 thenreturn falseend if//注册数据库名字li_rtn = registryset(ls_root_dsn,"DBQ",regstring!,ls_dbfullname) if li_rtn= - 1 thenreturn falseend if//注册数据库驱动程序li_rtn = registryset(ls_root_dsn,"Driver",regstring!,ls_driver) if li_rtn= - 1 thenreturn false。
在PB中连接DBF数据库的方法

在PB中使用DBF数据库的方法1. ODBC配置凡是要用到医保的工作站,都要进行ODBC的配置。
在配置ODBC前,请先在指定的地方创建一个文件夹。
具体位置可以和医保中心商量。
但是必须注意:工作站必须要能访问到此文件夹!为方便以下文档的描写,假设我的这个文件夹建在:\\bsoftftp\bsoft-jt\云南禄丰(注:以下图片为Windows 2000中的图片,与Win98可能会有些出入)✧ 1.1 在Windows的控制面板中,找到ODBC数据源:✧ 1.2 双击“数据源(ODBC)”,出现“ODBC数据源管理器”对话框:✧ 1.3 单击“添加…”按钮,选择数据源的驱动程序:Microsoft FoxPro VFP Driver (*.dbf):✧ 1.4 点完成,出现“ODBC Visible FoxPro Setup”对话框,填入以下数据:Data Source Name:YBJKDescription :医保接口DataBase Type :选Free Table directory点“Browse …”按钮点“网络(W)…”,选择上面创建的目录,点“完成”:点“确定”点“OK”,即完成对ODBC的配置。
2. 建表2.1 DBF文件的建立如果表已建好,则可省去这一步。
由于表是DBF文件,故只能在PB中创建。
在PB的“DB Profile”(数据库配置)中,选择ODBC,点“NEW”,如以下图片填写各内容:(注:连接时,会出现一个错误提示,如下图。
可以点“确定”不管此提示,不影响连接。
)连接以后,就可以用PB建表。
注:PB生成表(即DBF文件)以后,放于PB当前目录下。
所以在建好表结构后,要把这两个文件COPY到上面指定的目录:\\bsoftftp\bsoft-jt\云南禄丰。
PB如何连接Oracle数据库

PB如何连接Oracle数据库PB如何连接Oracle数据库PB如何连接Oracle数据库如果你已经是个powerbuilder高手,那么下面的东西对你来说毫无价值,你大可不必再看下去,如果你刚刚步入powerbuilder的殿堂,那么下面的东西对你来说可能有点价值,你应该看一看。
作为一个优秀的客户端开发工具,powerbuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过odbc或者powerbuilder自带的db profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是powerbuilder本身的原因,比如在安装powerbuilder时的选项、odbc的版本之类;也可能是在安装客户端的oracle、sybase、informix、sql server等软件上的问题,下面就从最根本的odbc配置开始,教你一步步如何连接上数据库。
odbc数据源的配置进入控制面板,打开odbc数据源(32位),如图1所示,点击add 按钮,进入odbc数据源的配置面板,如图2所示:选择oracle odbc driver 一项,注意当前版本号为8.00.0400 ,如果你的操作系统中安装的是oracle7,则相应的版本号会不同。
提醒一点:在windows98操作系统上是无法安装oracle8.0.4的(只能安装oracle7.2.3),oracle8.0.5则没有试过。
因而会有一些使用者在windows98系统上无法正常配置odbc 数据源,因为windows98本身自带的odbc数据源已经比oracle7数据源版本要高,无论你怎样配置odbc,系统总会提示你要安装一个更高版本的oracle,自然你就无法配置odbc了,有一个解决方法就是用pb7第二张光盘上的odbc安装程序覆盖系统中的odbc,或者把你的操作系统改为windows95/97算了。
PB程序移植后的数据库连接问题
PB程序移植后的ASA数据库连接问题pb中创建一个ASA数据库,如存放在E盘,把整个程序复制到
另外一台机器中的D盘(或其他非E盘的路径),连不上数据库。
连接时提示:cannot connect to the database sever: the specified database is invalid.
最简单的解决方法:
程序移植后数据库的存放路径和原路径相同则可以连接数据库。
最好的预防方法:
建立ASA数据库的时候不使用LOG,则移植后即使db文件的路径不相同,也可以正常连接数据库。
默认是有对勾的,去掉对勾才不会出现以上的问题。
复杂的解决方法一:
找到PB安装后的程序位置,找到如下...\Sybase\SQL Anywhere 8\win32里面的DBLOG.EXE,把dblog.exe复制到你的db文件目录下使用
使用cmd,运行如下命令:
使用格式为:dblog [ options ] database-file
其中,[ options ]为-t log-name是设置事务日志名 database-file是数据库文件名。
例如dblog -t zichan.log zichan.db
设置事务日志文件的名称(-t) 此选项设置新的事务日志的文件
在设置时:
你的log-name为相对路径,或是没有路径只有一个文件名,那么你的db和log文件随便复制到什么路径下,都可以用了。
如果你的log-name为绝对路径,那你就可以限制你的用户的安装路径了!
复杂的解决方法二:
前面方法一相同,打命令时使用dblog -n 数据库文件名,删除数据库日志文件。
pb mysql 方法
pb mysql 方法使用PB MySQL 方法进行数据库管理引言:在现代的互联网时代,数据的管理和存储变得越来越重要。
而MySQL作为一种常用的关系型数据库管理系统,被广泛应用于各种网站和应用程序中。
本文将介绍如何使用PB MySQL方法进行数据库管理,包括数据库的创建、表的设计、数据的插入、查询和更新等操作。
一、创建数据库在PB MySQL中创建数据库非常简单,只需要使用CREATE DATABASE语句即可。
例如,要创建一个名为"mydatabase"的数据库,可以使用以下语句:```sqlCREATE DATABASE mydatabase;```创建数据库时,还可以指定字符集和排序规则等参数,以满足特定的需求。
二、设计表结构在数据库中,数据以表的形式进行存储。
在PB MySQL中,可以使用CREATE TABLE语句来创建表,并指定表的字段、数据类型、约束等信息。
例如,要创建一个名为"users"的表,包含id、name、age和email字段,可以使用以下语句:```sqlCREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(50));```在创建表时,可以根据实际需求设置主键、唯一约束、非空约束等,以保证数据的完整性和一致性。
三、插入数据在数据库中插入数据是非常常见的操作。
在PB MySQL中,可以使用INSERT INTO语句来插入数据。
例如,要向"users"表中插入一条记录,可以使用以下语句:```sqlINSERT INTO users (id, name, age, email)VALUES(1,'John',20,'****************');```可以一次性插入多条记录,只需要在VALUES子句中添加对应的值即可。
PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别
问题1:PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别?我发现PB用专用接口连接数据库时,对Varchar型字段最多只能存200多个汉字,但是用ODBC 连接可以存4000个,可达到Varchar(8000)的最大长度,这是什么原因,怎么改进?专用接口连接数据库时,对SQL Server的存储过程支持要比ODBC 好,如果用ODBC 连接,对带参数的数据窗口(采用存储过程),没法传递参数,但是专用接口连接数据库却可以。
问题2:关于PB动态生成数据窗口的问题。
比如用如下代码生成一个数据窗口,在编辑时每一个编辑框都会出现一个兰色的背景框或者底框,怎么去掉?==========================================================string ERRORS, sql_syntaxstring presentation_str, dwsyntax_strsql_syntax = "SELECT emp_data.emp_id,"&+ "emp_data.emp_name FROM emp_data "&+ "WHERE emp_data.emp_salary > 45000"presentation_str = "style(type=grid)"dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax, &presentation_str, ERRORS)IF Len(ERRORS) > 0 THENMessageBox("Caution", &"SyntaxFromSQL caused these errors: " + ERRORS)RETURNEND IFdw_1.Create( dwsyntax_str, ERRORS)IF Len(ERRORS) > 0 THENMessageBox("Caution", &"Create cause these errors: " + ERRORS)RETURNEND IFDW_1.settransoject(sqlca)dw_1.retrieve()==========================================不能贴图,大家可以自己实验一下,应该是生成那个SQL的字符串sql_syntax不够细致,怎么样能使数据窗口漂亮些。
PB11.5连接数据库主要有以下四种方法
一、使用 SNC SQL Native Client 方式连接数据库
sqlca = create transaction
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)" //接口说明
SQLCA.LogId = "sa" //数据库管理员ID
SQLCA.LogPass = "" //数据库管理员密码
SQLCA.ServerName = "." //数据库服务器名称或者IP地址
SQLCA.DBParm = "Database='techmager'" //要连接的数据库名称
sqlca.autocommit=true //设置是否自动提交
connect using sqlca; //执行数SQLCA.DBMS = "" //接口说明
SQLCA.LogId = "sa" //数据库管理员ID
SQLCA.LogPass = '' //数据库管理员密码
connect using sqlca ; //执行数据库连接
使用 连接数据库方式连接数据库时,客户端电脑需要安装dotNetFramework 运行环境才能成功连接到数据库
四、使用 ODBC连接数据库
SQLCA.DBMS = "ODBC" //接口说明
connect using sqlca; //执行数据库连接
使用ODBC接口方式连接数据库,客户端电脑必须配置ODBC数据源,才能连接数据库
SQLCA.AutoCommit = False //设置是否自动提交
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 = FalseSQLCA.DBParm="ConnectString='DSN=xxx_dsn;UID=xxx;PWD="',ConnectOption='SQL_DRIVER_C ONNECT,SQL_DRIVER_NOPROMPT'"二、专用数据库接口每个数据库管理系统(DBMS)均提供相应的客户端驱动,为了更好的服务于数据库。
在这里我们使用的是Microsoft sqlserver 2000 的客户端程序。
通过设置SQLCA.DBMS ="MSS Microsoft SQL Server" 使客户端通过专用数据库接口连接到数据库。
该类接口的参数配置除了服务器名、数据库名、LogId、LogPass外还包含了连接协议等用户验证方式等,可通过服务器端或客户端的配置程序进行配置。
SQLCA.dbms= "MSS Microsoft SQL Server" //接口类型SQLCA.database= "master" //数据库erid= ""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写法(以的tax例程为例)tax.ini[Database]DBMS=ODBCDatabase=testDbParm=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_oledbSQLCA.DBMS = "OLE DB"SQLCA.LogPass = "sql"SQLCA.LogId = "dba"SQLCA.AutoCommit = FalseSQLCA.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.双击这个文件,添加连接信息.详情请访问 搜索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 forpb连接MS SQL Server问题!一.连接步骤1)服务器安装SQL Server并启动,创建数据库。