敬业的IT人 >> 数据库 >> Foxpro >> Visual FoxPro 9中新的数据处理方式

Visual FoxPro 9中新的数据处理方式

敬业的IT人 互联网 佚名 2008-1-8 14:41:18
Visual FoxPro9.0与以前的版本相比,在数据引擎上做了很大的改进。从增强的SQL语言到支持新的数据类型和索引都作了增强,本文阐述了这个最新版本作为一个成熟开发平台的魅力。

  数据引擎的改变主要体现在以下5个方面:

  · 增强的SQL语言:取消了很多硬编码的限制,增强了子查询和关联查询的支持,支持更复杂的表达式,以及增强了对UNIborder="0" alt="Visual FoxPro 9中新的数据处理方式" />
  BLOB

  BLOB数据类型没有固定的长度限制,与Memo类型有些相似。它被存储在以.FPT结尾的文件中,被.DBF文件引用。BLOB字段与Memo字段有相同的限定条件,并且他们都不支持索引。

  与VarBinary数据类型一样,Visual FoxPro 9不会将BLOB类型作代码页转换,而是保持它原始的二进制格式。

  BLOB数据类型的设计意图旨在取代最初的Gerneral字段。如果图形或者其它一些媒体类型以BLOB的格式存储,可用Image控件的PictureVal属性对它们进行浏览。

  MEMO与BLOB类型的数据不能直接修改,如果直接修改的话,那只会显示它们的16进制的映像。

  在以前的版本中,Visual FoxPro在建表语句CREATE TABLE创建字段类型时,一般用字段名称的第一个字母来取代。但随着数据类型的增多,像Character和Currency这两种字段类型如果采用第一个字母的简写方式的话会导致同名冲突。现在的版本可以同时支持字段类型的全称、全称的简写、第一个大写字母等多种方式,表1列出了所有的数据类型。

  表1: 下面是FoxPro所有的数据类型的全称和字母缩写。

数据类型 全称字母缩写 CharacterChar, CharacterC Date DateD DateTimeDatetimeT NumericNum, NumberN FloatingFloatF Integer Int, IntegerI DoubleDoubleB CurrencyCurrency Y LogicalLogicalL Memo Memo M General GeneralG Picture Picture P VarChar VarcharV VarBinary Varbinary Q BLOB Blob W
  与新引进的二进制索引一样,如果要使用新版本中的数据类型,那你必须升级到Visual FoxPro 9。否则就不能使用这些新的数据类型。

  远程数据

  Visual FoxPro以前的版本对远程数据有很强大的支持,但新版本中为操作及取得远程数据提供了更强大的控制功能。

  事务和连接

  一个名为DisconnectRoolBack的新属性被加入到了新版本,当事务处于挂起状态或连接断开时可以用它来将事务回滚。SQLSetProp、SQLGetProp、DBSetProp和DBGetProp函数都支持这个新属性。

  SQLIdleDisconnect()是一个新增加的函数,它可用来临时地终断一个连接。在大多数情况下,它通过一个IdleTimeOut的属性来控制连接超时的时间。但在多线程运行环境中是不允许线程处于空闲状态的,在这种情况下调用此函数将真正释放这个连接。

  游标处理

  通过调用CursorGetProp()函数可以取得两个新的属性:RecordsFetched和FetchlsComplete。这些属性能让你知道目前已经处理了多少条记录,以及什么时候可以将所有的记录处理完。

  RecordsFetched的值不会影响游标中的记录数目。并且如果在查询中设置了过滤表达式的话,那么过滤表达示将会被忽略掉。
如果你想在查询或更新的SQL语句中知道实际处理记录的数目,那可以调用SQLEXEC()和SQLMORERSULTS()函数,并通过一个名为aCountInfo的二维数组作为它们的参数,当函数调用后,此二维数组将包含表别名以及实际处理记录的数目。

  对CursorAdapter和XMLAdapter的增强

  关于对CursorAdapter和XMLAdapter的增强足以用长篇大论来描述。但限于篇幅,我们只描述一些显著增强功能。

  CursorAdapter作了很多的改动,使得它现在看上去像一个远程视图。这些增强如下:

  · 支持时间戳域。这允许UPDATE或DELETE语句可以在WHERE条件中以时间戳作为条件进行数据更新。

  · 支持自动更新。这项特性可以使得当使用INSERT或UPDATE进行远程数据更新时,CursorAdapter能够自动地刷新。当你使用自动序号字段、缺省字段或时间戳时这项特性变得非常有用。

  · 根据你的需要进行记录刷新。CursorAdapter中添加了一些新的属性和事件使得你能及时地刷新本地或远程视图,其功能与REFRESH()类似。

  此外,CursorAdapter还增加了一些属性用来支持DEFAULT和CHECK约束,并且可以将远程数据映射到新的VarChar和VarBinary数据类型上。

  XMLAdapter作了如下改进:

  · 层次型XML结构支持

  · XPath表达式支持

  · XML编码与解码的增强

  最后结论

  在本文中,你已经领略到了新版本数据引擎发生的本质改变。同时新版本还兼顾了向后兼容性,以及提供了方便的升级步骤,使得从版本8升级到版本9对用户而言是一个透明的过程。只要你升级到了版本9,你就能享受到这种巨大的优越性,并且无需改变你的原有代码。它让你的程序建立在一个强兼容性、强大功能以及高可维护性的基础之上。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com