OdbcCommand.CommandText 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置要对数据源执行的 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 命令将执行此存储过程 (。
如果当前连接正在执行执行或提取操作,则无法设置 ConnectionCommandType 和 CommandText 属性。
当 设置为 Text
时CommandType,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。