点击或拖拽改变大小

Functions.DbGetProp 方法

X#
检索当前数据库或当前数据库中的字段、命名连接、表或视图的属性值。
备注 备注:
在检索数据库及其连接、表、视图或字段的属性之前,必须先打开数据库。 但是,在检索表或视图的属性之前,不需要打开表或视图。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION DbGetProp(
	cName AS STRING,
	cType AS STRING,
	cProperty AS STRING
) AS USUAL
查看代码

参数

cName
类型:String
指定当前打开数据库或当前打开数据库中的字段、命名连接、表或视图的名称, DbGetProp( )将返回这些对象的信息。
要返回表或视图中字段的信息,请在字段名称前加上包含该字段的表或视图的名称。 例如,要返回customer表中custid字段的信息,请为cName指定以下内容:
X#
1customer.custid
cType
类型:String
指定cName是当前数据库,还是当前数据库中的字段、命名连接、表或视图。 备注部分的表格列出了cType的可用值。
cProperty
类型:String
指定DbGetProp( )返回信息的属性名称。
备注部分的表格列出了可以为cProperty指定的值、返回值类型和每个属性的描述。 每个描述包括属性的读写权限。如果属性是只读的,则无法使用DbSetProp( )更改其值。

返回值

类型:__Usual
字符、数值或逻辑数据类型。DbGetProp( )返回指定属性的值。
备注
有关设置属性值的更多信息,请参见DbSetProp( )函数。
cType描述
ConnectioncName是当前数据库中的命名连接。
DatabaseName是当前数据库。
FieldcName是当前数据库中的字段。
TablecName是当前数据库中的表。
View cName是当前数据库中的视图。
连接属性
cProperty类型描述
AsynchronousL 连接模式。(默认)False (.F.) 指定同步连接。True (.T.) 指定异步连接。
BatchModeL 批处理模式。(默认)True (.T.) 指定连接以批处理模式运行。
CommentC连接注释的文本。
ConnectStringC登录连接字符串。
ConnectTimeoutN连接超时间隔(以秒为单位)。默认值为0(无限等待)。
DatabaseC在Create Connection命令或Connection Designer中使用Database子句指定的服务器数据库名称。
DataSourceCOdbc.ini文件中定义的数据源名称。
DisconnectRollbackL 指定在为最后一个连接句柄调用SqlDisconnect( )时是提交还是回滚挂起的事务。
默认值为false (.F.),表示在为最后一个连接句柄调用SqlDisconnect( )时提交挂起的事务。
指定true (.T.)以在为最后一个连接句柄调用SqlDisconnect( )时回滚挂起的事务。
具有自动事务处理的连接不受此设置的影响。
DispLoginN 包含一个数值,用于确定何时显示ODBC登录对话框。DispLogin可以采用以下值:
1或DB_PROMPTCOMPLETE(来自Foxpro.h)。1是默认值。
2或DB_PROMPTALWAYS(来自Foxpro.h)。
3或DB_PROMPTNEVER(来自Foxpro.h)。
如果指定1或DB_PROMPTCOMPLETE,X#仅在缺少任何必需信息时才显示ODBC登录对话框。
如果指定2或DB_PROMPTALWAYS,则始终显示ODBC登录对话框,允许您在连接之前更改设置。
如果指定3或DB_PROMPTNEVER,则不显示ODBC登录对话框, 如果所需的登录信息不可用,X#将生成错误。
DispWarningsL 包含一个逻辑值,用于确定是否显示来自远程表、ODBC或X#的不可捕获的警告。 (默认)True (.T.) 指定显示不可捕获的错误。
IdleTimeout N 空闲超时间隔(以分钟为单位)。超时每分钟最多检查一次, 因此活动连接可能会在指定时间间隔过后一到两分钟后才停用。 默认值为0(无限等待)。
PacketSizeN 连接使用的网络数据包大小。 调整此值可以提高性能。默认值为4096字节(4K)。
PassWordC连接密码。
QueryTimeoutN查询超时间隔(以秒为单位)。默认值为0(无限等待)。
TransactionsN 包含一个数值,用于确定连接如何管理远程表上的事务。Transactions可以采用以下值:
1或DB_TRANSAUTO(来自Foxpro.h)。1是默认值。远程表的事务处理自动处理。
2或DB_TRANSMANUAL(来自Foxpro.h)。事务处理通过SqlCommit( )和SqlRollBack( )手动处理。
UserIdC用户标识。
WaitTimeN X#在检查SQL语句是否已完成执行之前经过的时间(以毫秒为单位)。 默认值为100毫秒。
备注 备注:
所有这些都是可读/写的


数据库属性
cProperty类型描述
CommentC 数据库注释的文本。
读/写。
DBCEventFileNameC包含DBC事件代码的外部程序文件的相对路径和文件名。
DBCEventsLDBC事件的启用状态。设置为True (.T.)以启用。
VersionN 数据库版本号。
只读。


表的字段属性
cProperty类型描述
CaptionC 字段标题。如果此属性的值前面有等号(=),X#会将该值评估为表达式。 否则,它被视为字符串字面量。
CommentC 字段注释的文本。
DefaultValueC字段的默认值。
DisplayClassC用于字段映射的类的名称。
DisplayClassLibraryCDisplayClass属性指定的类库的路径。
FormatC字段显示格式。有关格式设置的列表,请参见Format属性。
InputMaskC字段输入格式。有关输入掩码设置的列表,请参见InputMask属性。
RuleExpressionC字段规则表达式。
RuleTextC字段规则错误文本。
备注 备注:
以上所有属性均为读/写


视图的字段属性
cProperty类型描述
CaptionC 字段标题。如果此属性的值前面有等号(=), Visual FoxPro会将该值评估为表达式。否则,它被视为字符串字面量。
CommentC字段注释的文本。
DataTypeC 视图中字段的数据类型。最初设置为数据源中该字段的数据类型。
要使用DbSetProp( )为字段指定不同的数据类型,请使用Create Table – SQL中创建字段的语法。
例如,要将名为Mytable的表中名为iCost的整数字段的数据类型更改为宽度为4且小数位为2的数值类型, 使用DbSetProp('mytable.icost', 'field', ; 'DataType', 'N(4,2)')
您还可以包含NOCPTRANS子句以防止将字符和备注字段转换为不同的代码页。
对于远程视图为读/写。
DisplayClassC用于字段映射的类的名称。
DisplayClassLibraryCDisplayClass属性指定的类库的路径。
DefaultValueC字段的默认值
KeyFieldL如果字段在索引键表达式中指定,则包含True (.T.);否则,包含False (.F.)。
RuleExpressionC字段规则表达式。
RuleTextC字段规则错误文本。
UpdatableL如果字段可以更新,则包含True (.T.);否则,包含False (.F.)。
UpdateNameC当字段中的数据更新到远程表时使用的字段名称。默认为远程表字段名。
备注 备注:
以上所有属性均为读/写


表属性
cProperty类型描述
CommentC 表注释的文本。
读/写。
DeleteTriggerC 删除触发器表达式。
只读。
InsertTriggerC 插入触发器表达式。
只读。
PathC 相对于DBC的表的相对路径,包括文件名。
只读。
PrimaryKeyC 主键的标签名。
只读。
RuleExpressionC 行规则表达式。
只读。
RuleTextC 行规则错误文本。
只读。
UpdateTriggerC 更新触发器表达式。
只读。


视图属性
cProperty类型描述
AllowSimultaneousFetchL 适用于使用远程视图、共享连接和使用ODBC创建的游标。
当允许共享连接的类似配置的游标同时获取行时,AllowSimultaneousFetch包含True (.T.)。
否则,当不允许同时获取行时,AllowSimultaneousFetch包含False (.F.)。
备注 备注:
此属性在X# 8.0及更高版本中可用。在X# 8.0及更高版本中创建的视图与早期版本不兼容。 在X# 8.0之前的版本中对包含在X# 8.0及更高版本中创建或修改的远程视图的数据库容器调用VALIDATE Database命令会生成错误。 在X# 8.0之前的版本中调用VALIDATE Database RECOVER会从任何此类视图中删除AllowSimultaneousFetch属性。
BatchUpdateCountN 发送到后端的视图更新语句的数量。默认为1。 调整此值可以大大提高更新性能。
读/写。
CommentC 视图注释的文本。
读/写。
CompareMemoL 如果在更新的Where子句中包含备注字段(类型为Memo、General或Picture,或对于远程视图,类型为Timestamp), 则包含true (.T.)(默认);否则,包含false (.F.)。
读/写。
ConnectNameC 打开视图时使用的命名连接。
只读。
FetchAsNeededL 如果为True (.T.),则仅在需要时获取数据,例如当记录指针移动到尚未获取的行时。
如果为False (.F.),则在空闲时获取额外数据。(默认)
备注 备注:
当禁用渐进式获取时(FetchSize为-1),FetchAsNeeded不适用。

读/写。
FetchMemoL 如果与视图结果一起获取备注和通用字段,则包含true (.T.)(默认);否则,包含false (.F.)。
使用ISMEMOFETCHED( )函数来确定是否已获取备注字段。
读/写。
FetchSizeN 包含一次从远程表获取的记录数。默认为100条记录。 将FetchSize设置为–1会检索完整的结果集,受MaxRecords设置的限制。
备注 备注:
渐进式获取会保持连接直到检索所有行。 如果ShareConnection为True (.T.),请谨慎使用FetchSize进行编码。

读/写。
MaxRecordsN 返回结果集时获取的最大记录数。默认为– 1(返回所有行)。
值为0指定执行视图但不获取任何结果。
读/写。
OfflineL 如果视图是离线视图,则包含true (.T.)。
只读。
ParameterListC Where子句参数。参数的格式为"ParameterName1, 'Type1'; ParameterName2, 'Type2'; ...",其中Type 是指定参数类型的以下字符之一:
C – 字符型 D – 日期型 T – 日期时间型 N – 数值型 F – 浮点型 B – 双精度型 I – 整数型 Y – 货币型 L - 逻辑型
例如,"MyParam1, 'C'"指定了一个名为MyParam1的字符型参数。
有关创建参数化视图的更多信息,请参见如何:创建参数化视图。
可读/写。
PreparedL 如果为后续Requery( )函数调用准备了SQL语句,则包含True (.T.)。 Requery( )用于再次检索SQL视图的数据。有关准备SQL语句的更多信息,请参见SqlPrepare( )。 默认值为False (.F.)。
在Browse或Edit窗口中编辑数据时发生错误时显示的规则文本表达式。
可读/写。
RuleExpressionC 行规则表达式。
可读/写。
RuleTextC 在Browse或Edit窗口中编辑数据时发生错误时显示的规则文本表达式。
可读/写。
SendUpdatesL 如果发送SQL更新查询以更新远程表,则包含True (.T.);否则,包含False (.F.)(默认)。
可读/写。
ShareConnectionL 如果发送SQL更新查询以更新远程表,则包含True (.T.);否则,包含False (.F.)(默认)。
可读/写。
ShareTypeL 如果视图可以与其他连接共享其连接句柄,则包含True (.T.);否则,包含False (.F.)。
可读/写。
SourceTypeN 视图源。SourceType可能具有以下值:
1 - 视图使用本地表。
2 - 视图使用远程表。
只读。
SQLC 打开视图时执行的SQL语句。
可读/写。
TablesC 表名的逗号分隔列表。
可读/写。
UpdateTypeN 更新类型。有效值为:
1 或 DB_Update(来自Foxpro.h)。用新数据更新旧数据(默认)。
2 或 DB_DeleteInsert(来自Foxpro.h)。删除旧数据并插入新数据。
可读/写。
UseMemoSizeN 结果列以备注字段返回的最小大小(以字节为单位)。 例如,如果列结果的宽度大于UseMemoSize的值,则列结果将存储在备注字段中。 UseMemoSize可以从1到255变化;默认值为255。
可读/写。
WhereTypeN 用于更新远程表的Where子句。WhereType可能具有以下值:
1 或 DB_KEY(来自Foxpro.h)。用于更新远程表的Where子句仅包含 使用KeyFieldList属性指定的主键字段。
2 或 DB_KEYANDUPDATable(来自Foxpro.h)。用于更新远程表的Where子句包含使用KeyFieldList属性 指定的主键字段和任何可更新字段。
3 或 DB_KEYANDMODIFIED(来自Foxpro.h)(默认)。用于更新远程表的Where子句包含使用KeyFieldList属性 指定的主键字段和任何其他已修改的字段。
4 或 DB_KEYANDTIMESTAMP(来自Foxpro.h)。用于更新远程表的Where子句包含使用KeyFieldList属性 指定的主键字段和时间戳的比较。
有关WhereType属性的更多信息,请参见使用视图管理更新。
可读/写。
示例
X#
 1Close Databases
 2Clear
 3Open Database (HOME(2) + 'Data\testdata')
 4* 显示主键字段
 5cResults = DbGetProp("customer", "Table", "PrimaryKey")
 6=MessageBox(cResults)   // 显示    'cust_id'
 7* 显示'cust_id'字段的注释
 8cResults = DbGetProp("customer.cust_id", "Field", "Comment")
 9
10IF LEN(ALLTRIM(cResults)) = 0
11    =MessageBox("此字段没有注释。" + CHR(13) + ;
12    CHR (13) + "使用DbSetProp( )添加注释。")
13ELSE
14    =MessageBox("Cust_id字段注释:" + cRESULTS)
15ENDIF
参见