OdbcCommand.CommandText 属性

定义

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

public:
 virtual property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public:
 property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public override string CommandText { get; set; }
public string CommandText { get; set; }
member this.CommandText : string with get, set
Public Overrides Property CommandText As String
Public Property CommandText As String

属性值

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

实现

注解

当 属性 CommandType 设置为 StoredProcedure时, CommandText 应使用标准 ODBC 存储过程转义序列设置 属性。 CommandText将 设置为存储过程的名称不会像其他.NET Framework数据提供程序那样工作。

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

  • 日期、时间、时间戳和日期时间间隔文本

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

  • LIKE 谓词转义字符

  • 外部联接

  • 过程调用

ODBC 使用的转义序列如下所示:

{extension}  

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

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

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

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

例如,调用 Execute 方法之一或) 时, ExecuteReaderExecuteNonQuery 命令将执行此存储过程 (。

如果当前连接正在执行执行或提取操作,则无法设置 ConnectionCommandTypeCommandText 属性。

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

SELECT * FROM Customers WHERE CustomerID = ?  

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

如果参数包含 null 值,则 ODBC .NET Framework 数据提供程序仍会绑定该参数,但如果已使用 SQL_DEFAULT_PARAM 而不是 null 值定义参数,则使用默认参数。 例如, 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。

适用于

另请参阅