更新日期:2024年09月11日
使GBaseConnection 执行CommandText 属性指定的SQL 语句,并使用
CommandBehavior 的一个值构建GBaseDataReader。
语法
[Visual Basic]
Public Function ExecuteReader ( _
behavior As CommandBehavior _
) As GBaseDataReader
[C#]
public GBaseDataReader ExecuteReader(CommandBehavior behavior);
参数
1) behavior :CommandBehavior 的一个值。
返回值
一个GBaseDataReader 对象。
注释
当CommandType 属性是StoredProcedure 时, CommandText 属性应该设置
为存储过程的名字。
在用户调用Execute 方法的时候,
命令执行这个存储过程。
GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司
- 143 -
GBaseDataReader 可以支持使用大二进制值的特殊模式,使得读取更有效
率。对于更多信息,参考SequentialAccess 对于CommandBehavior 的设置。
当使用GBaseDataReader 的时候,相关的GBaseConnection 忙于服务
GBaseDataReader。此时,没有其它的操作可以在GBaseConnection 上执行除非
关闭它。这个情况会持续到调用GBaseDataReader 的Close 方法。如果
GBaseDataReader 使用设置为CloseConnection 的CommandBehavior 创建,
关闭
GBaseDataReader 也会自动关闭连接。
注意,当使用SingleRow 行为调用ExecuteReader 的时候,用户应该小心
使用SQL 中的limit 子句,
这会让客户端返回所有的行
(到达给定的上限)
。
Read
方法还会返回false,
但是所有的行放入客户端会造成性能上的冲击。
如果limit
子句不需要,就应该避免使用。
数据库服务器提供了四个 SQL 函数,
您可以从 SQL 语句中调用这些函数来导入和导出智
能大对象。下表显示智能大对象函数。
表 1. 智能大对象的 SQL 函数
函数名称
用途
FILETOBLOB()
将文件复制到 BLOB 列中
FILETOCLOB()
将文件复制到 CLOB 列中
LOCOPY()
将 BLOB 或 CLOB 数据复制的另一个 BLOB 或 CLOB 列中
LOTOFILE()
将 BLOB 或 CLOB 数据复制到文件中
有关智能大对象函数的详细信息和语法,请参阅《GBase 8s SQL 指南:语法》中的表达式
段。
可以在 SELECT UPDATE 和 INSERT 语句中使用该表显示的任何函数。有关如何在
INSERT 和 UPDATE 语句中使用上述函数的示例,请参阅修改数据。
假设您创建 inmate 和 fbi_list 表,如下图所示。
图: 创建 inmate 和 fbi_list 表
CREATE TABLE inmate
(
id_num INT,
picture BLOB,
felony CLOB
);
CREATE TABLE fbi_list
(
id INTEGER,
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 98 -
mugshot BLOB
) PUT mugshot IN (sbspace1);
以下 SELECT 语句使用 LOTOFILE() 函数将数据从 felony 列复制到位于客户机上
的 felon_322.txt 文件中:
SELECT id_num, LOTOFILE(felony, 'felon_322.txt', 'client')
FROM inmate
WHERE id = 322;
LOTOFILE() 的第一个参数指定将从中导出数据的列的名称。
第二个参数指定要将数据复制
到其中的文件的名称。第三个参数指定目标文件是位于客户端计算机('client')或服务器计
算机('server')上。
根据源文件是驻留在客户机还是服务器计算机上,下列规则可用来指定函数参数中文件名
的路径:
如果源文件驻留在服务器计算机上,那么必须指定文件的全路径名(不是与当前工作目录
相对的路径名)。
如果源文件驻留在客户端计算机上,那么可以指定文件的全路径名或相对路径名。