PB与各种数据库连接(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: PB与各种数据库连接

---- 如果你愿意,也可以将原FoxPro中的数据库先转换到TXT格式文件,再将TXT格式的文件导入SQL

Anywhere数据库(表)中,不过TXT文件中一条记录独占一行,各字段间必须用Tab键(符)隔开,其导入方法与DBF文件中数据的导入方法类似。


---- 以上两种办法均可实现在Power Builder下访问FoxPro数据库,但两种方法之间有些不同之处:

从系统需求来看:第一种方式使用ODBC直接访问DBF文件,只要Power

Builder基本系统即可,不需要安装数据库管理系统(DBMS);而第二种方式必须安装SQL Anywhere系统。

从运行效率来看:第一种方式速度要慢一些,后一种方式稍快。笔者在应用程序中比较了两种方式在速度上的差异:将FoxPro系统中的一个有15000余条记录的数据库,用第一种方式联接、在数据窗口控制中显示(Retieve)记录,需要6秒钟左右,后来又用第二种方式:在SQL

Anywhere

中新建一个表,将这15000条记录导入表中,联接、显示记录,需要时间为3-4秒。对另一个拥有19万余条记录的FoxPro数据库直接使用ODBC,联接、显示的时间为85秒钟。


PB连接my sql数据库

真是失败!没有给自己多留几个位置,只能在这里弄了!

有几位朋友说要pb连接mysql的数据库,我在网上找了一个例子,不知道正确不正确,大家看看,好使的话,就说一声!


PB下连接Mysql


需要安装myodbc,具体的安装和设置请参阅:

http://dev.mysql.com/doc/refman/5.0/en/myodbc-installation-binary.html#myodbc-installation-binary-windows-installer

使用DSN方式:

ConnectString='DSN=dl;DESC=MySQL ODBC 3.51 Driver 
DSN;DATABASE=xxxx;SERVER=xxx.xxx.xxx.xxx;UID=xxxx;PASSWORD=xxxx;PORT=3306;SOCKET=;OPTION=3;STMT=;'

或者

ConnectString='DRIVER={MySQL ODBC 3.51 
Driver};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3'

PB中连接Access数据库的三种方法


Edit by laozang

PB中连接Access数据库的三种方法

方式一:

SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='driver=Microsoft Access Driver 
(*.mdb);DBQ=c:\foodmart.mdb'"
CONNECT;
IF SQLCA.SQLCode <> 0 THEN

MessageBox("数据库连接失败","请与管理员联系。错误号:" + String(SQLCA.SQLCode) +

"~r~n错误原因:" + SQLCA.SQLErrText)

RETURN

else

MessageBox("数据库连接成功","现在进入系统... ...")

end if

方式二:

SQLCA.DBMS = "OLE DB"
SQLCA.AutoCommit = False
SQLCA.DBParm = 
"PROVIDER='Microsoft.Jet.OLEDB.4.0',DATASOURCE='C:\foodmart.mdb'"
CONNECT;

方式三:

建立DSN,通过ODBC连接。这个就不用多说了。

例如:

// Profile my_ass
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.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_rtn
string ls_root,ls_root_dsn,ls_root_Jet,ls_root_Engines
integer li_rtn
string ls_dsnname,ls_dbfullname,ls_driver,temp,ls_version 
string ls_syspath
environment env
integer rtn
ls_syspath = Space( 40 ) 
//获得*作系统的目录
GetSystemDirectoryA(ls_syspath,60)
ls_driver = ls_syspath + "\odbcjt32.dll"
lb_rtn = true
ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"
//数据源名字为:文件名字+“_DT”
ls_dsnname = as_database + "_DT" 
ls_root_dsn = ls_root + "\" + ls_dsnname
ls_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 then
return false
end if
//注册数据库名字
li_rtn = registryset(ls_root_dsn,"DBQ",regstring!,ls_dbfullname)
if li_rtn= - 1 then
return false
end if
//注册数据库驱动程序
li_rtn = registryset(ls_root_dsn,"Driver",regstring!,ls_driver)
if li_rtn= - 1 then
return false

用PB连接Access数据库(.mdb文件)在注册表中的ODBC配置相关项-


用PB连接Access数据库(.mdb文件)在注册表中的ODBC配置相关项


//***************************************************************************/
ODBC相关的键,主要有下面几项: 
HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER 
记录所有已安装的ODBC驱动程序;
HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI 记录各种ODBC驱动程序的相关信息;
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources 
记录各种数据源的类型; 
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 记录各种数据源的详细信息。 
//***************************************************************************/
//ODBC下Access数据库的键的配置
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\数据源名称(如TEST)
//说明:"..."="HKEY_CURRENT_USER\Software\ODBC"
//键值设置
...\ODBC.INI\数据源名称(如TEST)\DBQ REG_SZ 数据库文件所在路径
...\ODBC.INI\数据源名称(如TEST)\Driver REG_SZ 
odbc驱动所在路径(C:\WINNT\System32\odbcjt32.dll)
...\ODBC.INI\数据源名称(如TEST)\DriverId REG_DWORD 0x00000019(25)
...\ODBC.INI\数据源名称(如TEST)\FIL REG_SZ MS Access;
...\ODBC.INI\数据源名称(如TEST)\SafeTransactions REG_DWORD 0x00000000(0)
...\ODBC.INI\数据源名称(如TEST)\UID REG_SZ 
//子键没有也可以
//子键配置(...\ODBC.INI\数据源名称(如TEST)\Engines) 无(默认)
//子键配置(...\ODBC.INI\数据源名称(如TEST)\Engines\Jet)
...\ODBC.INI\数据源名称(如TEST)\Engines\Jet\ImplicitCommitSync REG_SZ 
...\ODBC.INI\数据源名称(如TEST)\Engines\Jet\MaxBufferSize REG_DWORD 
0x00000800(2048)
...\ODBC.INI\数据源名称(如TEST)\Engines\Jet\PageTimeout REG_DWORD 
0x00000005(5)
...\ODBC.INI\数据源名称(如TEST)\Engines\Jet\Threads REG_DWORD 
0x00000003(3)
...\ODBC.INI\数据源名称(如TEST)\Engines\Jet\UserCommitSync REG_SZ Yes
//***************************************************************************/
//PB中相关注册表操作函数
RegistryGet ( key, valuename, { valuetype }, valuevariable )
RegistryKeys ( key, subkeys )
RegistrySet ( key, valuename, valuetype, value )
RegistryValues ( key, valuename )
//valuetype:
RegString!
RegExpandString!
RegBinary!
ReguLong!
ReguLongBigEndian!
RegLink!
RegMultiString!
//***************************************************************************/
//获取操作系统的system目录,并保存到ls_location变量 
li_sysdir = 
RegistryGet("KYEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup","SysDir",RegString!ls_location); 
IF li_sysdir = -1 THEN 
  Messagebox('错误','应用程序无法获取Windows的系统目录,系统将终止运行!',Stopsign!); 
RETURN; 
END IF 
//然后根据系统目录得出odbc驱动(odbcjt32.dll)的路径
//***************************************************************************/
//数据库事务连接
SQLCA.DBMS = "ODBC"
SQLCA.Database = 数据库文件名
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
sqlca.DbParm="Connectstring='DSN=数据源名称;UID=sa;PWD=;"
connect using sqlca;

PowerBuilder连接Sybase SQL Server的注意事项


PowerBuilder连接Sybase SQL Server的注意事项

首先, 确认Open Client 已经安装, 并正确配置, 且能够通过wisql 或Sybase

Advantage查询SERVER端数据库中的数据.

PowerBuilder连接不上Sybase数据库, 主要原因有以下几点:

1) locales.dat 未正确设置

locales.dat 是Client端字符集设置文件, 一般在c:\sybase\locales\

目录下。若操作系统平台是Windows 95, 则修改[NT]节下的相关内容;若操作系统平台是Windows 3.x,

则修改[win3]节下的相关内容。

a、应该有一行有关中国的国别设置:

locale = chs, us_english, iso_1

b、Client端的缺省字符集设置应该和Server端的字符集设置一致。

本例中将Client端的缺省字符集设为iso_1:

locale = default, us_english, iso_1

2) 重装SQL SERVER后未运行pbsyc.sql

pbsyc.sql用于在Sybase数据库中创建PowerBuilder所需的系统表和存储过程,它在PowerBuilder安装盘的server目录下。当PowerBuilder第一次连接数据库之前,或Sybase重装之后,需要在isql或SybaseAdvantage中,用"sa"登录到"master"数据库,运行pbsyc.sql

. 另外,若连接的是Adaptive Server 11.5,需要先对pbsyc.sql文件做如下改动:

将"@@"替换为"@",但保留"@@error"和"@@isolation"

3) PowerBuilder是32位的,但Open Client是16位的,由于PowerBuilder需要通过Open

Client实现与数据库的连接,所以Open Client必须与PowerBuilder同为32位,或同为16位。

4) 未安装Sybase的直连接口(Native Driver)或ODBC接口(ODBC

Driver)PowerBuilder需要通过Native Driver或ODBC

Driver才能访问数据库,所以若需要访问Sybase数据库,Native Driver或ODBC Driver是必需的。

5) Open Client中定义的Server Name与PowerBuilder应用中SQLCA.ServerName

设置的值不一致。

6)

未将PowerBuilder的DLL库的路径名加到系统搜索路径上由于PowerBuilder应用程序运行时需要一些DLL库的支持,所以需要将PowerBuilder的DLL库的路径加到系统搜索路径上。

下面是系统缺省的DLL库安装路径:

长文件名安装时:(PB6.0)

c:\Program Files\Powersoft\Shared\

长文件名安装时:(PB5.0)

c:\Program Files\Common Files\Powersoft Shared\

短文件名安装时:

c:\pwrs\sys32\
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL Java 关系型数据库
应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库
该博客文章介绍了在JSP中使用JDBC连接SQL Server数据库的方法,包括加载数据库驱动、建立数据库连接的过程,并提供了一个使用DriverManager类创建数据库连接的Java示例代码。
|
6月前
|
弹性计算 关系型数据库 MySQL
检测 MySQL 数据库连接数量
【4月更文挑战第28天】
49 0
|
6月前
|
网络协议 数据库连接 网络安全
DM数据库连接数据库时报:创建sokect连接失败
DM数据库连接数据库时报:创建sokect连接失败
1162 0
|
数据库连接 C# 数据库
|
SQL 数据库连接 数据库
PB数据库搭建
PB数据库搭建
384 0
PB数据库搭建
|
SQL 数据库连接 数据库
PB导入数据库
PB导入数据库
152 0
PB导入数据库
|
关系型数据库 数据库连接 数据库
数据库连接数配置
数据库连接数配置
635 0
数据库连接数配置
|
SQL 存储 Oracle
PB与各种数据库连接(二)
PB与各种数据库连接
272 0
|
SQL 存储 Oracle
PB与各种数据库连接(一)
PB与各种数据库连接
742 0