gpt4 book ai didi

C# 和 SQL 服务器 : add parameter to query

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:09 24 4
gpt4 key购买 nike

我有这个查询(本身不重要):

SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Table1 WHERE " +
"CONTAINS((col1, col2, col3), " + "'\"*m*\"' )" +
"ORDER BY(SELECT null) " +
"OFFSET(1) ROWS FETCH NEXT(100) ROWS ONLY", conn);

它返回所有在指定列中具有“m”的行,正如它应该的那样。请注意,“m”位于一对星号(通配符)、引号和撇号内。

我想对其进行参数化,即在查询中放入任何字符串。

我是这样写的:

SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Table1 WHERE "+ "CONTAINS((col1, col2, col3), " +    "'\"*@searchText*\"' )" +  
"ORDER BY(SELECT null) "+
"OFFSET(1) ROWS FETCH NEXT(100) ROWS ONLY", conn);
sqlCmd.Parameters.AddWithValue("@searchText", textToSearch);

但是这段代码不是将 textToSearch 字符串的内容放入 SqlCommand 中,而是将 @searchText 本身放入。

我在这里查看了类似的帖子并尝试关注但没有成功,可能是因为格式中有一个撇号、一个引号和一个星号。

我做错了什么?

我应该如何指定这个命令?

最佳答案

您将参数括在为字符串保留的单引号内。

删除参数周围的单引号,你应该没问题:

你的:

+ "'\"@searchText\"' )" +

正确:

+ " @searchText)" +

编辑:

如果您想在搜索内容中包含双引号和星号,您需要像这样在 SQL 中连接字符串:

+ "'\"*' + @searchText + '*\"')" +

EDIT2:

根据@steve 的建议:

textToSearch = "'\"*" + textToSearch + "*\"'"

然后,您可以将 SQL 保留为更具可读性的 SQL。

+ " @searchText)" +

关于C# 和 SQL 服务器 : add parameter to query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45064204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com