在 C# 中为 SQL 创建一个字符串,在存储过程中包含函数
Create a string in C# for SQL contains function in stored procedure
我有一个这样的存储过程:
ALTER PROCEDURE autoCompleteFeedback
@words varchar(255)
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT TOP 5 *
FROM feedback
WHERE CONTAINS(feedbackMsg, @words)
AND NOT feedbackMsg LIKE '%Del%';
END
GO
EXEC autoCompleteFeedback '"*Who*"'
效果很好
但现在我想从 C# 向我的程序传递一个词
例如:
string myString = "whooHoo";
string auto = '"*+myString+*"';
var a = nm.autoCompleteFeedback(auto).ToList();
我无法正确获取转义字符,可以吗?
提前致谢
您可以使用反斜杠转义引号:
string auto = $"'\"*{myString}*\"'";
或者您可以在字符串前使用 @
符号来获取逐字字符串文字。这样你就可以使用双引号转义引号:
string auto = $@"'""*{myString}*""'";
在这种情况下,我会选择第一个选项,因为我认为它更具可读性。
通过使用 $
,您可以使用大括号将变量插入到字符串中:
string name = "Alexander";
string greet = $"Hello {name}";
//greet = "Hello Alexander"
转义有两种方式:
- 使用反斜杠。要转义
"
你必须使用 \"
- using
@"Your query"
在查询中使用 ""
转义 wuotes
第二个选项允许您定义多行字符串,如下所示:
var query= @"Alter PROCEDURE autoCompleteFeedback
-- Add the parameters for the stored procedure here
@words varchar(255)
AS
BEGIN
SET NOCOUNT ON;
select distinct top 5 * from feedback where CONTAINS(feedbackMsg,@words)
AND NOT feedbackMsg LIKE '%Del%';
END
";
重要说明:永远不要连接字符串以执行任何类型的 SQL。务必始终使用参数,否则您将受到 SQL 注入攻击。
最简单的答案;
string myString = "whooHoo";
string auto = "'\"*" + myString + "*\"'";
Console.WriteLine(myString); // whooHoo
Console.WriteLine(auto); // '"*whooHoo*"'
我有一个这样的存储过程:
ALTER PROCEDURE autoCompleteFeedback
@words varchar(255)
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT TOP 5 *
FROM feedback
WHERE CONTAINS(feedbackMsg, @words)
AND NOT feedbackMsg LIKE '%Del%';
END
GO
EXEC autoCompleteFeedback '"*Who*"'
效果很好
但现在我想从 C# 向我的程序传递一个词
例如:
string myString = "whooHoo";
string auto = '"*+myString+*"';
var a = nm.autoCompleteFeedback(auto).ToList();
我无法正确获取转义字符,可以吗?
提前致谢
您可以使用反斜杠转义引号:
string auto = $"'\"*{myString}*\"'";
或者您可以在字符串前使用 @
符号来获取逐字字符串文字。这样你就可以使用双引号转义引号:
string auto = $@"'""*{myString}*""'";
在这种情况下,我会选择第一个选项,因为我认为它更具可读性。
通过使用 $
,您可以使用大括号将变量插入到字符串中:
string name = "Alexander";
string greet = $"Hello {name}";
//greet = "Hello Alexander"
转义有两种方式:
- 使用反斜杠。要转义
"
你必须使用\"
- using
@"Your query"
在查询中使用""
转义 wuotes
第二个选项允许您定义多行字符串,如下所示:
var query= @"Alter PROCEDURE autoCompleteFeedback
-- Add the parameters for the stored procedure here
@words varchar(255)
AS
BEGIN
SET NOCOUNT ON;
select distinct top 5 * from feedback where CONTAINS(feedbackMsg,@words)
AND NOT feedbackMsg LIKE '%Del%';
END
";
重要说明:永远不要连接字符串以执行任何类型的 SQL。务必始终使用参数,否则您将受到 SQL 注入攻击。
最简单的答案;
string myString = "whooHoo";
string auto = "'\"*" + myString + "*\"'";
Console.WriteLine(myString); // whooHoo
Console.WriteLine(auto); // '"*whooHoo*"'