Functions.DbCreate 方法 | |
从数据库结构数组创建数据库文件。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION DbCreate(
cTargetFile,
aStruct,
cDriver,
lNew,
cAlias,
cDelim,
lOpen,
acRDDs
) AS LOGIC CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static bool DbCreate(
__Usual cTargetFile = default,
__Usual aStruct = default,
__Usual cDriver = default,
__Usual lNew = default,
__Usual cAlias = default,
__Usual cDelim = default,
__Usual lOpen = default,
__Usual acRDDs = default
)
查看代码参数
- cTargetFile (Optional)
- 类型:__Usual
新数据库文件的名称,包括可选的驱动器、目录和扩展名。参见 SetDefault() 和 SetPath() 了解文件搜索和创建规则。
数据库文件的默认扩展名由 RDD 决定。
如果 cTargetFile 不存在,则创建它。
如果存在,此函数会尝试以独占模式打开文件,如果成功,文件将被覆盖,不会发出警告或错误。
如果访问被拒绝(例如,因为另一个进程正在使用该文件),NetErr() 将被设置为 TRUE。
DBCreate() 根据 SetAnsi() 设置,以 ANSI 或 OEM 字符集格式创建指定文件。(有关更多信息,请参阅 SetAnsi() 函数。)
- aStruct (Optional)
- 类型:__Usual
包含字段描述的数组,格式与 DBStruct() 返回的格式相同。
此数组定义了新数据库文件的结构。
- cDriver (Optional)
- 类型:__Usual
将服务工作区的 RDD 的名称。
如果未指定,则使用由 RDDSetDefault() 确定的默认 RDD。
- lNew (Optional)
- 类型:__Usual
TRUE 在新工作区(第一个可用的)中打开数据库文件。FALSE 在当前工作区中打开它。lNew 仅在 lOpen 值为 TRUE 时有用。默认为 FALSE。
- cAlias (Optional)
- 类型:__Usual
与打开文件的工作区关联的别名。在单个应用程序中,X# 不接受重复的别名。cAlias 仅在 lOpen 值为 TRUE 时有用。
默认别名是八个字母的数据库文件名。
- cDelim (Optional)
- 类型:__Usual
分隔数据库文件中字段的分隔符。
如果您使用提供的 RDD 之一来处理 .DBF 文件,分隔符应该是 NULL_STRING,如果省略该
参数,这是默认值。
- lOpen (Optional)
- 类型:__Usual
TRUE 指定打开现有数据库文件;FALSE 指定打开新数据库文件。
默认为 FALSE。
这可用于打开现有的 SDF 和分隔文件,这些文件在头部没有结构 — 在这种情况下,应使用 aStruct。
- acRDDs (Optional)
- 类型:__Usual
一个包含 RDD 名称的一维数组,主 RDD 从中继承特殊功能。
这允许您在具有不同数据库驱动程序的不同工作区中使用具有特殊功能的 RDD,例如加密或解密。
这些 RDD 覆盖主 RDD 的特殊功能(使用 cDriver 参数指定)。
如果多个 RDD(使用此参数指定)实现相同的功能,则列表中最后一个 RDD 关联的功能优先。
如果省略 acRDDs,则不假定有其他 RDD。
返回值
类型:
Boolean
如果请求的操作成功,则返回 TRUE;否则返回 FALSE。
备注
DBCreate() 从包含文件结构的数组创建数据库文件。DBCreate() 类似于 CREATE FROM 命令,后者从结构扩展文件创建新的数据库文件结构。
在使用 DBCreate() 之前,您必须首先创建 aStruct 数组,并根据上表中的结构用字段定义数组填充它。您可以通过编程方式创建数组,也可以使用 DBStruct() 创建。
创建字段定义数组有一些具体规则,包括:
- 使用适当数据类型的值指定所有字段属性。
必须指定小数属性 — 即使对于非数字字段。
如果字段没有小数属性,请指定 0。
- 使用数据类型的第一个字母作为最小值来指定类型属性。
为了可读性,使用更长和更具描述性的术语。
例如,"C" 和 "Character" 都可以指定为字符字段的类型属性。
- 与 CREATE FROM 命令不同,DBCreate() 不使用小数属性来指定字段长度的高位部分。直接指定字段长度,不考虑其大小。
示例
以下示例演示了 DBCreate():
1USE test
2IF Used()
3 DBCreate("newdb.dbf", DBStruct(), "",;
4 TRUE,"", "", FALSE)
5ENDIF
此示例创建一个空数组,然后使用 AAdd() 函数添加字段定义子数组,然后创建 PEOPLE.DBF。您可以使用这种技术动态地向结构数组添加字段定义:
1aDBF := {}
2AAdd(aDBF, {"Name", "C", 25, 0})
3AAdd(aDBF, {"Address", "C", 1024, 0})
4AAdd(aDBF, {"Phone", "N", 13, 0})
5DBCreate("people", aDBF)
下一个示例执行与上面示例相同类型的操作,但它将结构数组声明为二维数组,然后使用下标寻址来指定字段定义。
数据库文件使用 DBFMDX RDD 创建:
1LOCAL aDBF[1][4]
2aDBF[1][DBS_NAME] := "Name"
3aDBF[1][DBS_TYPE] := "Character"
4aDBF[1][DBS_LEN] := 25
5aDBF[1][DBS_DEC] := 0
6DBCreate("Name", aDBF, "DBFMDX")
参见