PB导入数据库
- 格式:doc
- 大小:115.50 KB
- 文档页数:3


⼀、利⽤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开发环境下、应⽤程序中使⽤这些数据库,快速地开发出⾃⼰的信息管理系统,实现对这些数据库的维护与管理。
问题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不够细致,怎么样能使数据窗口漂亮些。
PB与各种数据库的连接转PB与各种数据库连接!1.Power script语言里的事务处理对象怎么理解PowerBuilder程序与数据库之间传递信息的一个结构变量,共有15个成员.你可以详细列表它的所有成员看看它的组成,PB的应用程序会初始化一个全局的结构体变量,SQLCA,当然你也可以自定义一个自己的事务对象.1 DBMS string所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC。
2 Databasestring要连接的数据库名字。
3 UserID string连接数据库所用的用户名。
有的DBMS不需要此项。
4 DBPass string用户连接数据库的口令。
5 Lockstring这是数据库的保护级别,一般不必给出。
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属性中错误码的文字说明。
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其值不同。