点击或拖拽改变大小

SQLSelect 类

X#
管理一个 SQL 选择语句,从 ODBC 数据源中选择一组行。可以使用 SQLSelect 方法读取、修改或删除这些行。
继承层次
Object
  DataServer
    SQLSelect
      SQLCatalogQuery
      SQLTable

命名空间:  VO
程序集:  VOSQLClasses (在 VOSQLClasses.dll 中) 版本:2.22 GA
语法
 CLASS SQLSelect INHERIT DataServer
查看代码

SQLSelect 类型公开以下成员。

构造函数
  名称说明
公共方法SQLSelect
构造一个 SQL 选择对象。
Top
属性
  名称说明
公共属性AppendData
公共属性AppendFlag
**缺少文档 **
公共属性BoF
一个逻辑值,指示服务器是否定位在结果集的开始,即第一行。
(重写 BoF.)
公共属性BoundedColumns
**缺少文档 **
公共属性Clients
**缺少文档**
(继承自 DataServer。)
公共属性ConcurrencyControl
一个常量,标识此数据服务的自动并发控制模式,确定何时以及如何锁定和释放记录:
(继承自 DataServer。)
公共属性Connection
SQLSelect 正在使用的 SQL 连接对象,以操作结果集。
公共属性CursorName
包含游标名称的字符串。
公共属性CursorType
一个常量,描述 SQL 语句使用的游标类型:
公共属性DBStruct
包含此数据服务器结构的数组。
(重写 DBStruct.)
公共属性Deleted
一个逻辑值,指示当前行是否已被删除。
公共属性EoF
一个逻辑值,指示服务器是否定位在结果集的末尾,即最后一行之后。
(重写 EoF.)
公共属性ErrInfo
一个 SQLErrorInformation 对象。
公共属性FCount
结果集中的列数。-1表示错误。
(重写 FCount.)
公共属性FOUND
一个逻辑值,指示上一次搜索操作是否成功。
公共属性HLStatus
**缺少文档**
(继承自 DataServer。)
公共属性代码示例HyperLabel
连接到此数据服务的超标签。通过超标签,您可以检索有关数据服务的其他信息。
(继承自 DataServer。)
公共属性IndexColumns
公共属性LASTREC
**Missing documentation **
公共属性Modified
公共属性MoreResults
一个逻辑值,表示是否还有更多行要检索。
公共属性Name
表示此数据服务名称的字符串。
(继承自 DataServer。)
公共属性NameSym
表示此数据服务名称的符号。
(继承自 DataServer。)
公共属性NativeSQL
一个字符串,包含语句的原生 SQL 文本。
Level 2
公共属性NullAsBlank
一个逻辑值,确定 SQL NULL 值是否是强类型(TRUE)还是非强类型(FALSE,默认值)。
公共属性NumCols
公共属性NumParameters
一个数字值,包含参数的数量。值为-1表示错误。
Level 2
公共属性NumResultColumns
一个数字值,包含结果集中的列数。
公共属性NumSuccessfulRows
一个数字值,包含被删除、追加或更新操作修改的行数。
公共属性PrepFlag
一个逻辑值,指示选择语句是否已经准备好。
公共属性RecCount
一个数字值,表示数据服务器中的行数。
(重写 RecCount.)
公共属性代码示例Recno
一个数字值,表示数据服务器中的相对位置。
(重写 RecNo.)
公共属性RecNo
表示当前记录号的数值,标识此数据服务中记录指针的位置。
(继承自 DataServer。)
公共属性RowCount
公共属性ScrollConcurrency
一个常量,描述 SQL 语句使用的并发模式:
公共属性ScrollUpdateType
一个常量,描述在追加、更新或删除操作期间使用的 SQL 语句的类型。
公共属性SimulateCursor
一个常量,描述 ODBC 驱动程序如何尝试保证更新或删除语句只影响一行。
公共属性SQLColumns
**缺少文档**
公共属性SqlData
**缺少文档**
公共属性SQLString
一个字符串,表示 SQL 语句文本。
公共属性Statement
一个 SQL 语句对象。
公共属性StatementHandle
一个表示语句句柄的数值。
公共属性代码示例Status
一个超链接对象,用于标识最后一次操作后的状态。
(重写 Status.)
公共属性TableName
一个字符串,表示表的名称。
公共属性TimeStampAsDate
**缺少文档 **
公共属性Used
一个逻辑值,指示当前查询是否处于活动状态。 如果当前查询处于活动状态,返回 TRUE;否则,返回 FALSE。
Top
方法
  名称说明
公共方法AddDateVal
公共方法AddTimeString
公共方法代码示例Append
在缓冲区中创建一个空行;这个空行成为当前位置,并准备好分配数据值。这个缓冲区的 SQLSelect:RecNo 是 SQLSelect:RecCount+1。
(重写 Append.)
公共方法AppendRow
插入自上次 SQLSelect:Append() 操作以来在缓冲区中创建的行。
公共方法AsString
返回为此数据服务定义的描述性标签。
(继承自 DataServer。)
公共方法BindColumn
公共方法Close
关闭与服务器对应的游标。 请注意,数据库连接不会关闭,只有游标关闭。
(重写 Close.)
公共方法Column
返回指定的 SQL 列。
公共方法ColumnAttributes
返回指定列的 SQL 列属性。
公共方法Commit
保存自上次 Commit() 以来所做的更改(更新和删除)。
(重写 Commit.)
公共方法DataField
返回指定列位置的数据(DataField对象)。
(重写 DataField(__Usual).)
公共方法Delete
删除当前行。
(重写 Delete.)
公共方法DirectSkip
公共方法Error
提供处理数据库处理过程中引发的错误条件的方法。这是一个事件处理程序:它会被其他方法自动调用;开发人员通常不需要调用错误方法,但可能需要替换或修改它。
公共方法代码示例Execute
打开游标。
公共方法ExtendedFetch
提供扩展的获取能力,指定类型和行。
公共方法Fetch
获取下一行。
公共方法FIELDGET
检索指定列的内容。
(重写 FIELDGET(__Usual).)
公共方法FieldGetFormatted
根据其字段规范的格式规范,检索指定列的内容。
(重写 FieldGetFormatted(__Usual).)
公共方法FieldHyperLabel
返回指定列的超级标签。
(重写 FieldHyperLabel(__Usual).)
公共方法FieldInfo
检索有关指定列的信息,或为该列设置别名。
公共方法FieldName
返回指定列的名称。请注意,列的超级标签也包含一个名称。
(重写 FieldName(__Usual).)
公共方法FieldPos
返回数据服务器中指定列的位置,作为从1开始的数字。
(重写 FieldPos(__Usual).)
公共方法FIELDPUT
为数据服务器中的列分配一个值。
(重写 FIELDPUT(__Usual, __Usual).)
公共方法FieldSpec
返回指定列的字段规范对象。
(重写 FieldSpec(__Usual).)
公共方法FieldStatus
返回一个超级标签对象,该对象标识最后一次操作后的状态。
(重写 FieldStatus(__Usual).)
公共方法FieldSym
返回指定列的符号名称。请注意,列的超级标签也包含一个名称;这两个名称在 SQL 编辑器生成的代码中是相同的。
(重写 FieldSym(__Usual).)
公共方法FieldValidate
根据指定列的 FieldSpec 的验证规则验证提供的值。
(重写 FieldValidate(__Usual, __Usual).)
公共方法FLOCK
此方法用于覆盖从 DataServer 类继承的功能,因为它不适用于 SQLSelect。
(重写 FLOCK.)
公共方法FreeStmt
根据指定的选项释放语句。
公共方法GetData
检索指定列的内容。
公共方法GetdateVal
公共方法代码示例GetLookupTable
从服务器的两个字段中检索两列值的二维数组。
公共方法GetStatementOption
检索语句选项的当前设置。
公共方法GetTimeStamp
公共方法GetTimeString
公共方法代码示例GoBottom
将数据服务器定位在最后一行。
(重写 GoBottom.)
公共方法GoTo
将数据服务器定位在指定的行号。
(重写 GoTo(__Usual).)
公共方法代码示例GoTop
将数据服务器定位在第一行。
(重写 GoTop.)
公共方法NoIVarGet
提供一个通用的错误拦截,当在任何类中访问不存在的导出实例变量时,系统会自动调用(NoIVarGet)。 在 SQLSelect 类中,它用于实现虚拟列变量。
重要!NoIVarGet()不应直接调用;系统会要求处理无效引用时,才会调用它。
(重写 NoIVarGet(__Usual).)
公共方法NoIVarPut
提供一个通用的错误拦截,当在任何类中对不存在的导出实例变量进行赋值引用时,系统会自动调用(NoIVarPut)。
重要!NoIVarPut()不应直接调用;系统会要求处理无效引用时,才会调用它。
(重写 NoIVarPut(__Usual, __Usual).)
公共方法Notify
提供一个方法,该方法在服务器的操作方法完成某些重要事件后自动调用:列已更改,服务器位置已更改,已完成某些操作。 它的标准实现是向其附加的客户端广播相同的通知。
(重写 Notify(__Usual, __Usual).)
公共方法NumResultCols
返回结果集中的列数。
公共方法PostInit
实现窗口的自定义初始化代码。
(继承自 DataServer。)
公共方法代码示例PreExecute
返回由 X# 生成的 SQL 命令。
公共方法PreInit
实现服务的自定义初始化代码。
(继承自 DataServer。)
公共方法Prepare
准备语句。
公共方法Refresh
刷新缓冲区中的当前行,丢弃已经进行的任何更改。
公共方法RegisterClient
将对象注册为此数据服务的客户端,以便它接收来自服务的有关某些操作的通知消息。
(继承自 DataServer。)
公共方法ReReadRow
公共方法ResetCursor
公共方法ResetNotification
恢复向服务器附加的客户端广播的Notify消息(在调用 SQLSelect:SuspendNotification() 之后)。
(重写 ResetNotification.)
公共方法RLOCK
提供此方法是为了覆盖从 DataServer 类继承的功能,因为它不适用于 SQLSelect。
(重写 RLOCK(__Usual).)
公共方法RLockVerify
提供此方法是为了覆盖从 DataServer 类继承的功能,因为它不适用于 SQLSelect。
(重写 RLockVerify.)
公共方法Rollback (重写 Rollback.)
公共方法Seek
移动到控制顺序中具有指定键值的下一条记录。
(继承自 DataServer。)
公共方法SetColumnAttributes
公共方法SetDataField (重写 SetDataField(__Usual, __Usual).)
公共方法SetPos
公共方法SetPrimaryKey
指定要在需要键的搜索更新或删除操作中用作唯一索引的列。
公共方法SetStatementOption
更改语句选项。
公共方法SetTimeStamp
公共方法Skip
相对于当前行向前或向后移动。 (类似于 Skip() 函数)。
(重写 Skip(__Usual).)
公共方法SuspendNotification
暂停向服务器的附加客户端广播通知的传播。
(重写 SuspendNotification.)
公共方法Unlock
此方法用于覆盖从 DataServer 类继承的功能,因为它不适用于 SQLSelect。
公共方法UnLock
删除此数据服务上持有的所有锁定。
(继承自 DataServer。)
公共方法UnRegisterClient
取消对象作为此数据服务客户端的注册,以便它不再接收来自服务的有关某些操作的通知消息。
(继承自 DataServer。)
公共方法Update
使用另一个服务或表中的数据更新此服务。
(继承自 DataServer。)
公共方法Update(__Usual)
更新当前行或恢复行的原始值。
公共方法UpdateCursor
公共方法UpdateKey
公共方法UpdateVal
Top
备注
一旦在 DataServer 对象中打开了一个 SQL 表,就可以通过 SQLSelect 类的方法对其进行操作:
X#
1oCust:= SQLSelect{"SELECT * FROM customer"}
2oCust:Skip(3)
3? oCust:CustName
4oCust:Delete()
5oCust:Close()
SQL 返回的模型将行和列作为结果集返回,而不是记录和字段。列可以被视为对象的导出实例变量。 它们也可以通过 FieldGet() 和 FieldPut() 方法访问,列通过符号、字符串或数字进行标识:
X#
1oCust := SQLSelect{"SELECT * FROM customer"}
2oCust:CustNo := 1234
3? oCust:CustNo
4oCust:FieldPut(#CustNo, 1234)
5oCust:FieldPut("CustNo", 1234)
6oCust:FieldPut(1, 1234)
7? oCust:FieldGet(#CustNo)
8? oCust:FieldGet("CustNo")
9? oCust:FieldGet(1)
(当然,这些列并不是 SQLSelect 类的真正导出变量。请参阅“对象、类和方法”在程序员指南中的讨论, 了解如何使用 NoIVarGet() 和 NoIVarPut() 方法创建这些“虚拟”导出变量。) 与 DBServer 类不同,SQLSelect 类在创建对象时不会将服务器定位在第一行。但是,当调用引用第一行的方法时,它将自动定位在第一行。 对于支持定位操作(例如,WATCOM)的数据库,使用可滚动游标,定位方法(GoTop(),GoBottom(),Skip(),GoTo())使用驱动程序。 否则,SQLSelect 会在前进时缓冲行,并通过在缓冲区内移动来执行定位方法(用于向后定位)。 有关更多信息,请参阅 SQLConnection:ScrollCsr 访问。要禁用此缓冲,请使用 SQLSelect:BufferData() 方法。 不可能使用 SQLSelect 类来创建数据库表;在打开服务器之前,表必须存在。
提示 提示:
SQLSelect 对象使用的游标类型和锁定模式可以通过以下函数进行控制。 请查阅您使用的 ODBC 驱动程序的文档,以了解此设置对应用程序性能的影响。
SqlSetStmtConcurrency(), SqlSetStmtCursorType(), SqlSetStmtSimulateCursor()
参见