连接odbc数据库-odbc连接sqlserver
---- 如果你愿意,也可以将原FoxPro中的数据库先转换到TXT格式文件,再将TXT格式的文件导入SQL
Anywhere数据库(表)中,不过TXT文件中一条记录独占一行,各字段间必须用Tab键(符)隔开,其导入方法与DBF文件中数据的导入方法类似。
---- 以上两种办法均可实现在Power Builder下访问FoxPro数据库连接odbc数据库,但两种方法之间有些不同之处:
从系统需求来看:第一种方式使用ODBC直接访问DBF文件,只要Power
Builder基本系统即可,不需要安装数据库管理系统(DBMS);而第二种方式必须安装SQL Anywhere系统。
从运行效率来看:第一种方式速度要慢一些,后一种方式稍快。笔者在应用程序中比较了两种方式在速度上的差异:将FoxPro系统中的一个有15000余条记录的数据库连接odbc数据库,用第一种方式联接、在数据窗口控制中显示(Retieve)记录,需要6秒钟左右,后来又用第二种方式:在SQL
Anywhere
中新建一个表,将这15000条记录导入表中,联接、显示记录,需要时间为3-4秒。对另一个拥有19万余条记录的FoxPro数据库直接使用ODBC,联接、显示的时间为85秒钟。
PB连接my sql数据库
真是失败!没有给自己多留几个位置,只能在这里弄了!
有几位朋友说要pb连接mysql的数据库,我在网上找了一个例子,不知道正确不正确,大家看看,好使的话,就说一声!
PB下连接Mysql
需要安装myodbc,具体的安装和设置请参阅:
使用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\