Show/Hide Toolbars

XSharp

Note该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。

用途

在当前或下一个可用工作区打开现有数据库文件、相关备注文件和可选的相关索引文件。

语法

USE [<xcDataFile> [INDEX <xcIndexList>] [ALIAS <xcAlias>] [FIELDS <aFields>] [NEW] [READONLY]
 [EXCLUSIVE | SHARED] [VIA <cDriver>] [INHERIT <acRDDs>]]

参数

<xcDataFile>要打开的数据库文件名,包括可选的驱动器、目录和扩展名。 如果数据库文件有相应的备注文件,也会打开。 数据库和备注文件的默认扩展名由 RDD 决定。

 

INDEX <xcIndexFileList>
要打开的索引文件名,包括每个文件的可选驱动器、目录和扩展名。 默认扩展名由 RDD 决定,可使用 DBOrderInfo(DBOI_INDEXEXT) 获取。
 
如果将 <xcIndexList> 指定为表达式,且返回值为空格或 NIL,则该表达式将被忽略。
 
建议使用 SET INDEX 或 DBSetIndex() 打开索引文件,以便在并发冲突时妥善解决。
 
如果数据库文件、其对应的备注文件或任何索引文件不存在,则会出现运行时错误。 有关文件搜索和创建规则,请参见 SetDefault() 和 SetPath()。

 

ALIAS <xcAlias>打开 <xcDataFile> 时与工作区相关联的标识符名称。 如果未指定,别名默认为数据库文件名。 单个应用程序内不允许使用重复的别名。

 

FIELDS <aFields>包含字段描述的数组,格式由 DBStruct() 返回。
 
此参数不适用于 DBF 文件。 它适用于不存储字段描述的文件格式。 例如,如果使用支持 SDF 或分隔文件的 RDD,可以使用此参数定义文件结构,然后使用其他命令或函数访问字段说明。 以下是使用此参数的示例:

                 aFields := {;
                         {"First", "C", 35, 0};
                           {"Last", "C", 35, 0};
                       {"Birthday", "D", 8, 0}}
                       USE Names FIELDS aFields VIA "DELIM"
               ? First           // Return:  Josie

 

NEW在打开 <xcDataFile> 前选择下一个可用的工作区。 如果未指定,<xcDataFile> 将在当前工作区打开。

 

READONLY尝试以只读属性打开 <xcDataFile>,禁止更新工作区。 如果未指定,<xcDataFile> 将以读写方式打开,允许更新。 如果使用指定的属性无法访问 <xcDataFile>,则会出现运行时错误。

 

EXCLUSIVE试图打开 <xcDataFile> 供独占(非共享)使用。 在关闭数据库文件之前,所有其他进程都被拒绝访问。

 

SHARED尝试打开 <xcDataFile> 以供共享使用。
 
如果既未指定 SHARED 模式,也未指定 EXCLUSIVE 模式,USE 命令将尝试以 SetExclusive() 标志指示的模式打开 <xcDataFile>。 不过,强烈建议将指定打开模式作为 USE 命令的一部分,而不是依赖 SetExclusive() 来决定。

 

VIA <cDriver>为工作区提供服务的 RDD 名称。 如果未指定,则使用 RDDSetDefault() 确定的默认 RDD。

 

INHERIT <acRDDs>包含 RDD 名称的一维数组,主 RDD 从这些 RDD 继承特殊功能。 这样,您就可以在不同的工作区和不同的数据库驱动程序中使用具有特殊功能(如加密或解密)的 RDD。 这些 RDD 将覆盖主 RDD(使用 VIA 子句指定)的特殊功能。 如果多个 RDD(用 INHERIT 子句指定)实现了相同的功能,则与列表中最后一个 RDD 相关的功能优先。
 
在无参数情况下指定的 USE 会关闭当前工作区中打开的数据库文件。

描述

USE 命令尝试以指定模式打开 <xcDataFile>(及其关联的 .DBF 文件(如果有))。 如果文件成功打开,操作将继续以相同模式打开任何指定的索引文件 - 工作区中已打开的任何文件将被关闭。 列表中第一个索引文件的第一顺序成为控制顺序。

 

如果由于其他进程独占使用数据库文件等原因而拒绝访问,NetErr() 将被设置为 TRUE,但不会引发运行时错误。 因此,建议将打开索引文件作为一项单独操作(使用 SET INDEX 或 DBSetIndex())。 否则,当 USE 命令尝试打开列表中的第一个索引文件时,就会出现运行时错误,因为数据库文件尚未打开。

首次打开数据库文件时,记录指针位于文件中的第一条逻辑记录上(如果没有控制顺序,则位于第一条记录上)。

 

如果数据库文件是在共享模式下打开的,其他进程可以并发访问该文件,而数据完整性的责任则由应用程序承担。 文件和记录锁定(使用 FLock()、RLock() 或 DBRLock())是禁止其他进程访问特定文件或记录的基本方法。

 

有关如何关闭所有类型文件的信息,请参阅 CLOSE 命令。

 

USE 在功能上等同于 DBUseArea()。

示例

此示例将打开一个共享数据库文件及相关索引文件。 如果 NetErr() 返回 FALSE,表明 USE 成功,则索引被打开:

USE accounts SHARED NEW
IF !NetErr()
  SET INDEX TO acctnames, acctzip
ELSE
  ? "文件打开失败"
  BREAK
ENDIF

此示例打开了一个数据库文件,其中包含几个以扩展表达式指定的索引文件:

cDataFile = "MyDbf"
acIndex = {"MyIndex1", "MyIndex2", "MyIndex3"}
USE (cDataFile) INDEX (acIndex[1]), ;
     (acIndex[2]), (acIndex[3])

程序集

XSharp.RT.DLL

参见

CLOSE, DbSelect(), DbSetIndex(), DbSetOrder(), DbUseArea(), NetErr(), RddSetDefault() SELECT, SET INDEX, Used()