Share via


OdbcCommand.CommandText 属性

获取或设置要对数据源执行的 SQL 语句或存储过程。

**命名空间:**System.Data.Odbc
**程序集:**System.Data(在 system.data.dll 中)

语法

声明
Public Overrides Property CommandText As String
用法
Dim instance As OdbcCommand
Dim value As String

value = instance.CommandText

instance.CommandText = value
public override string CommandText { get; set; }
public:
virtual property String^ CommandText {
    String^ get () override;
    void set (String^ value) override;
}
/** @property */
public String get_CommandText ()

/** @property */
public void set_CommandText (String value)
public override function get CommandText () : String

public override function set CommandText (value : String)

属性值

要执行的 SQL 语句或存储过程。默认值为空字符串 ("")。

备注

CommandType 属性设置成 StoredProcedure 时,应该使用标准的 ODBC 存储过程转义序列来设置 CommandText 属性。将 CommandText 设置成存储过程名称的作用并不像此操作对于其他 .NET Framework 数据提供程序那样。

许多语言功能(例如,外部联接和标量函数调用)通常由数据源实现。甚至这些功能的语法往往是数据源特定的。因此,ODBC 定义了包含用于以下语言功能的标准语法的转义序列:

  • 日期、时间、时间戳和日期时间间隔字符串

  • 标量函数,如数字、字符串和数据类型转换函数

  • LIKE 谓词转义符

  • 外部联接

  • 过程调用

ODBC 使用的转义序列如下:

{extension}

此转义序列由 ODBC 驱动程序来识别和分析。然后这些驱动程序将使用数据源特定的语法来替换任何转义序列。

过程是存储在数据源的可执行对象。通常来讲,它是一个或更多的已经预编译的 SQL 语句。调用过程的转义序列是

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

其中 procedure-name 指定过程名称,parameter 指定过程参数。

当调用其中一个 “执行”(Execute) 方法(例如,ExecuteReaderExecuteNonQuery)时,该命令执行此存储过程。

如果当前连接正在执行“执行”(Execute) 或“获取”(Fetch) 操作,则不能设置 ConnectionCommandTypeCommandText 属性。

如果 CommandType 设置为 Text,ODBC.NET 提供程序就不支持命名的参数,该参数用于将参数传递给由 OdbcCommand 调用的 SQL 语句或存储过程。在这种情况下,必须使用问号 (?) 占位符。例如:

SELECT * FROM Customers WHERE CustomerID = ?

因此,OdbcParameter 对象添加到 OdbcParameterCollection 的顺序必须直接对应于参数的问号占位符的位置。

如果一个参数包含空值,则用于 ODBC 的 .NET Framework 数据提供程序仍然会绑定该参数,但会用默认参数(如果已使用 SQL_DEFAULT_PARAM 定义了一个默认参数的话)而不是空值。例如,OdbcParameterCollection

{1, null, 2}

被传递给 CommandText 属性:

{call sp(?, ?, ?)}

导致用于 ODBC 的 .NET Framework 数据提供程序将第一个参数绑定到值 1,将第三个参数绑定到值 2,将第二个参数作为 SQL_DEFAULT_PARAM 绑定。但是,此行为取决于驱动程序。如果驱动程序不支持此功能,就不要为参数传入值。例如,使用 OdbcParameterCollection

{1, 2}

并将 CommandText 属性设置为:

{call sp(?, null, ?)}

提示

如果省略一个参数,分隔该参数与其他参数的逗号必须仍然保留。如果省略输入参数或输入/输出参数,过程会使用该参数的默认值。指定输入参数或输入/输出参数的默认值的另外一种方式,是将绑定到该参数的长度/指示符缓冲区的值设置为 SQL_DEFAULT_PARAM 参数。

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1

请参见

参考

OdbcCommand 类
OdbcCommand 成员
System.Data.Odbc 命名空间
Connection
.Data.Odbc.OdbcCommand.CommandTimeout
CommandType

其他资源

Executing a Command