给你copy一段吧:
PB连接多个数据库
2007-11-29 13:54:23| 分类: PB | 标签: |字号大中小 订阅
声明多个Transaction变量
Transaction SQLCA, SQLCB;
SQLCA = Create
Transaction;
SQLCB = Create
Transaction;
然后做相应配置
SQLCADBMS = "ODBC"
SQLCAAutoCommit = False
SQLCADBParm =
"ConnectString='DSN=;UID=;PWD="
SQLCBDBMS = "ODBC"
SQLCBAutoCommit = False
SQLCBDBParm = "ConnectString='DSN=;UID=;PWD='"
使用的时候直接用Connect Using SQLCA就可以连接上SQLCA所对应的数据库,使用Connect Using
SQLCB则可以连接上SQLCB所对应的数据库,可以在程序中保持同时和多个数据库的连接,而不需要在连接使用完后DISCONNECT,因为频繁的使用CONNECT与DISCONNECT可能会导致很多意想不到的问题发生。
要注意的是:当我们在程序中使用SELECT等SQL语句时,PB默认的是使用SQLCA进行数据库连接,所以当使用SELECT等SQL语句的时候,必须在末尾加上USING
比如:
Select Name
Into: Ls_Name
From
Students
Where Number = :Ls_Number
Using NewTransaction;
一 利用ODBC联接FoxPro数据库
在Power Builder中 直接访问FoxPro数据库只能通过ODBC方式
在开发环境下 可以直接在PowerBar画板上配置ODBC 联接FoxPro数据库 方法如下
单击Configure ODBC工具钮 在Installed Drivers目录框中选择 Microsoft Foxpro Driver ( dbf)
单击 Create 按钮 命名数据源名 选择版本 取消 使用当前工作目录 选项
单击选定目录 选择被联接数据库所在的目录 确定退出
通过ODBC方式联接的FoxPro的数据库 一定要满足FoxPro的数据库格式 即数据库文件结构必须是 字节文件描述 若干个 字节的字段描述 结构描述结束符( D) 记录 记录 …… 文件结束符( A) 由此看来 传统的DBF数据库文件均可通过该方式联接 对于Visual FoxPro环境下建立的表(Table) 其结构与传统的数据库结构是不同的 它在字段描述结束符( D)与记录之间加上了二百多个字节的内容 但在未纳入VFP的数据库(Dbc)之前 其内容为 此时仍可以通过这种方式联接 一旦纳入数据库中 该段字节已被填上了其它内容 无法再联接
在Power Builder应用程序中 使用事务处理对象来联接数据库 这种事务处理对象 即有默认的SQLCA 用户也可以自己生成 以方便访问多个数据库 在程序中使用事务处理对象时 一般必须先指明DBMS DbParm两个属性 对于FoxPro数据库 还必须指明 Database userid servername 几个属性 这一点是与访问其他类型的数据库不同的地方
sqlca dbms= ODBC // 指定联接方式ODBC
sqlca database= D:\prg\pubdata // 指定被联接数据库所在目录
sqlca userid= public // 用户识别号 都为 public
sqlca servername= FOXPRO // 服务器名 均为FOXPRO
sqlca dbparm= Connectstring= DSN=tscxs //数据源名
connect using sqlca; // 实施联接
……
通过对FoxPro数据库的联接 用户便可以在Power Builder开发环境下 应用程序中使用这些数据库 快速地开发出自己的信息管理系统 实现对这些数据库的维护与管理
二 将DBF文件转换为SQL Anywhere 的DB文件格式
在Power Builder环境下 附带有一个数据库系统 SQL Anywhere 在Power Builder中利用它 用户可以直接建立 维护数据库 在SQL Anywhere中 数据库结构虽然与VFP不同 但概念是一致的 即 数据库是系统中相关的各种数据 这些数据又因不同用途组织成不同的表 这些表共同构成数据库 与传统的数据库(DBF)相类比 PB VFP中的表即是传统意义的数据库 PB VFP中的数据库类似于传统的数据库(DBF)文件所在的目录 SQL Anywhere中提供了将传统的DBF文件转换为该系统下的数据库文件(DB)中的表的工具 为了实现这一转换 用户必须先建立一个新的表 再将DBF格式的文件内容导入该表中
对于DBF文件 必须是传统意义上的数据库 如FoxPro dBase FoxBASE环境下的数据库文件 该种数据库文件严格遵循 数据文件==数据库结构+数据库记录 这一格式 其结构如下 字节文件描述 若干个 字节的字段描述 结构描述结束符( D) 记录 记录 …… 文件结束符( A)
A C
// 文件描述 时间 长
度 记录长 记录数
E D
// 第一个字段 名 类
型 长 起始位
F
// 第二个字段
F
……
D F C
// 结构结束符( D)
F D D E
记录
A
F E ……
D A
// 文件结束符( A)
将DBF文件直接转换为PB(SQL Anywhere)中的表 *** 作步骤如下
lishixinzhi/Article/program/PB/201311/24619
你所谓的“PB自带的数据库”应该指的是Adaptive Server Anywhere数据库,如果你安装了Adaptive Server Anywhere,那么就:开始菜单-程序-Sybase-Sybase Central,在界面的主菜单中tools-connect,输入用户名和密码,打开你的库。
当然,你也可以在PB环境中建立好连接,然后用Shift+F7打开数据库画板,一样可以完成你想要的 *** 作。
SQL语句的条件有错。你要检索学号,却用string型的学号做为数据的检索条件,逻辑上也通不过去嘛~~~
不知道你sle_1中的内容代表的是什么;意义的数据:
如果是姓名,则我可以这么猜测:
string s1,s3
s3=trim(sle_1text) //sle_1是一个单行编辑框
SELECT 学号
INTO :s1
FROM student
WHERE 姓名 = :s3;
希望能够帮助你理解。
二 查询系统的制作
制作从键盘输入记录号 可查询到该人的档案记录
①制作查询窗口 步骤为 鼠标点按Window图标 新建一窗口 在窗口中 添加一个DataWindow控件 在DataWindow控件上按鼠标右键 选择并单击Properties快捷菜单项 在在Datawindow object name旁按Browse按钮 选择装入前面制作的aaa数据窗口 调整好窗口的大小 再在窗口上放一SingleLineEdit控件 和一CommandButton按钮控件 点中按钮控件并按右键选择Properties 将其显示文本修改为 查询 按钮名称仍为cb_ 点中按钮控件并按右键选择Script… 输入以下脚本
dw_ settransobject(sqlca)
dw_ retrieve(sle_ text)
关闭并保存 按Save图标保存该窗口 窗口取名为aaa
②将查询窗口连接入test应用程序内 点按Application图标 出现test应用程序 双击test 出现名为w_genapp_frame的窗口图标 这是应用程序为我们提供的主窗口的名字 点按w_genapp_frame不放按右键选edit 出现该主窗口 将一按钮控件放入该窗口 按钮显示的文本可改为 唯一查询 也可省略不改 点中该按钮控件并按右键选择Script… 输入 open(aaa) 保存 点按Application图标 再按script图标 出现应用程序的自动生成的主体脚本 部分内容如下 它的任务是将数据库初始化 相当于win ini 假若不要应用程序的模板 则下面的脚本需自己输入 而使用模板后 现在我们只需将//connect 前面的注释号 // 符号删除即可 除省事外还避免了因为排版引起的下面的程序格式错误 (本人经常因为书中个别字母印刷错 或排版引起的程序格式错误造成程序无法运行而痛心不已 )
sqlca DBMS = ProfileString (ls_startupfile database dbms )sqlca database = ProfileString (ls_startupfile database database )sqlca userid = ProfileString (ls_startupfile database userid )sqlca dbpass = ProfileString (ls_startupfile database dbpass )sqlca logid = ProfileString (ls_startupfile database logid )sqlca logpass = ProfileString (ls_startupfile database LogPassWord )sqlca servername = ProfileString (ls_startupfile database servername )sqlca dbparm = ProfileString (ls_startupfile database dbparm )connect;
现在按Run图标运行该程序 结果如下图 为简化程序 我们只加入了多媒体中的字段 成功后 读者可自已增加动画 声音字段
讨论 假若多媒体的字段和数据个数比较少 也可用变量和函数来解决 如
temp =temp+ bmp p_ picturename=temp ole_ insertfile( sample avi )run( c:\acdsee exe c:\aa bmp normal!)
lishixinzhi/Article/program/SQL/201311/16400
一楼的说法是对的,两个函数,第一个是获取修改的行的modifiedcount()的函数,返回long行,得到被修改的行的总数,另一个是deletedcount(),得到数据窗口中被删除行的总行数,返回也是long型,两者相加,就是改变的总行数。
如果你单纯想获得被修改的总行数,可以使用modifedcount()。
还有一个方法,就是使用for循环,逐行判断数据窗口的状态。使用函数getitemstatus
long row, ll_modifiedcount = 0
dwItemStatus l_status
for row = 1 to dw_1Rowcount()
l_status = dw_1Getitemstatus(row,0,Primary!)
if l_status = newmodified! or l_status = datamodified! or l_status = new! then
//参数说明 GetItemstatus(行号, 字段名, 缓冲区),字段名用0,表示整行判断
//返回值说明
//new!表示一个刚刚新增的行, newmodified!表示新行被修改 datamodified!数据窗口非新增行被修改
ll_modifiedcount += 1
end if
end for(或者next)
软件版本
PowerBuilder Build
MySQL beta munity nt
MySQL Connector/ODBC (这个版本比较稳定)
MySQL GUI Tools r a(MySQL的可视化管理工具)
用PowerBuilder通过ODBC连接MySQL成功之后 在编程的过程中总会报一些莫名其妙的错误 例如
Catalog tables could not be created and are not available for use
Table XXX contains no columns with supported datatypes
SQLSTATE=S
[MySQL][ODBC Driver][mysqld beta munity nt]Table root pbcattbl doesn t exist
……
其实这些错误主要是因为PowerBuilder在MySQL无法建立系统表所导致的 PowerBuilder在连接数据库的时候 总会在数据库中建立五个PowerBuilder编程时所需要的系统表 这五个系统表分别是 pbcatcol pbcatedt pbcatfmt pbcattbl pbcatvld 在PowerBuilder安装盘的server文件夹下 有针对DB SQLAnyhere SybaseASE这三种数据库服务器的建立PowerBuilder系统表的SQL脚本文件 却没有针对MySQL的 如何在MySQL中建立PowerBuilder系统表呢?可以按照以下步骤来建立PowerBuilder系统表
启动MySQL数据库服务 通过MySQL GUI Tools建立一个新的Schema(实际上就是建立一个数据库) 如果你在ODBC数据源中设置的用户名是root 则这个新的Schema名称就是root 如果用户名是test 则这个Schema就起名为test 也就是Schema与访问MySQL的用户名同名 然后通过PowerBuilder访问你需要访问的数据库(假设数据库名为YourDB) 这时你会发现刚才新建的Schema中出现了久违的五个PowerBuilder系统表 然后你就可以在PowerBuilder为YourDB数据库中的表添加属性了 例如表Test 其表名为测试 字段Test 其字段名为测试 ……最后你查询一下新建的Schema中的pbcattbl和pbcatcol已经保存了数据库YourDB中表Test的信息了!
编辑推荐
ASP NET开发培训视频教程
lishixinzhi/Article/program/PB/201311/24601
以上就是关于PB 如何同时连接两个SQL数据库全部的内容,包括:PB 如何同时连接两个SQL数据库、在PB中使用FoxPro数据库的方法[1]、PB自带数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)