Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串中的动态t-sql引号_C#_Sql_Sql Server 2005_Tsql - Fatal编程技术网

C# 字符串中的动态t-sql引号

C# 字符串中的动态t-sql引号,c#,sql,sql-server-2005,tsql,C#,Sql,Sql Server 2005,Tsql,我在存储过程中具有以下内容: DECLARE @new_column_name varchar(9) DECLARE @table_name varchar(16) DECLARE @SQLString nvarchar(2000) SET @new_column_name = N'name' SET @table_name = N'tbl_test_table' SET @SQLString = N'SELECT @CountOUT = COUNT(*) FROM [' + @table_

我在存储过程中具有以下内容:

DECLARE @new_column_name varchar(9)
DECLARE @table_name varchar(16)
DECLARE @SQLString nvarchar(2000)

SET @new_column_name = N'name'
SET @table_name = N'tbl_test_table'

SET @SQLString = N'SELECT @CountOUT = COUNT(*) FROM [' + @table_name + '] WHERE [' + @new_column_name + '] = ''' + @description + ''''``
在@description中只有一个引号之前,这是绝对有效的。在我的C#中,我将单引号替换为两个单引号,但在创建上述SQL字符串时,这仍然会导致问题

如何解决此问题的任何想法:

SET @description = N'Adam''s Car'
我之所以使用动态SQL,是因为“name”列是临时的,只在存储过程的生命周期内存在。

NB:请参阅

您仍然应该使用参数化sql并使用
exec sp_executesql
(它接受参数)。在对象名称周围使用
QUOTENAME
,而不是自己连接括号

SET @SQLString = N'SELECT @CountOUT = COUNT(*) FROM ' + 
QUOTENAME(@table_name) + ' WHERE ' + 
QUOTENAME(@new_column_name) + ' = @description'

EXECUTE sp_executesql @SQLString
    ,N'@description varchar(50), @CountOUT int OUTPUT'
    ,@description = @description
    ,@CountOUT = @CountOUT OUTPUT;
注:见

您仍然应该使用参数化sql并使用
exec sp_executesql
(它接受参数)。在对象名称周围使用
QUOTENAME
,而不是自己连接括号

SET @SQLString = N'SELECT @CountOUT = COUNT(*) FROM ' + 
QUOTENAME(@table_name) + ' WHERE ' + 
QUOTENAME(@new_column_name) + ' = @description'

EXECUTE sp_executesql @SQLString
    ,N'@description varchar(50), @CountOUT int OUTPUT'
    ,@description = @description
    ,@CountOUT = @CountOUT OUTPUT;

在C#ADO.NET代码中使用参数…不幸的是,我没有用!在C#ADO.NET代码中使用参数…不幸的是,我没有用!