gpt4 book ai didi

c# - 带参数的 SelectCommand 提供空结果

转载 作者:行者123 更新时间:2023-11-30 22:34:14 25 4
gpt4 key购买 nike

目前我会稍微清理一下我的代码,VS 告诉我,最好对 sql 命令使用 SqlParameter 而不是复合 string。所以我决定更改我的代码,不幸的是现在我没有得到结果,我也不知道为什么。这是我的代码片段:

...    
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(GetSQLConnectionString());
SqlDataAdapter sqlSelect = new SqlDataAdapter();
try
{
connection.Open();
sqlSelect.SelectCommand = connection.CreateCommand();
sqlSelect.SelectCommand.CommandText = "SELECT id, @FROM AS \"from\", @TO AS \"to\" FROM Dictionary WHERE @FROM LIKE @SEARCHSTRING";
sqlSelect.SelectCommand.Parameters.Add(new SqlParameter("@FROM", this.from));
sqlSelect.SelectCommand.Parameters.Add(new SqlParameter("@TO", this.to));
sqlSelect.SelectCommand.Parameters.Add(new SqlParameter("@SEARCHSTRING", "'%" + this.SearchField.Text + "%'"));

sqlSelect.Fill(dt);
connection.Close();
}
catch(SqlException e)
...

我没有发现任何异常。为什么搜索后dt为空? (对于复合字符串,选择有效。)出了什么问题?

问候

最佳答案

您不能使用这样的参数指定字段名称。在您的 where 子句 WHERE @FROM LIKE @SEARCHSTRING 中,它将参数 @FROM 的值与参数 @SEARCHSTRING 的值进行比较。

如果 where 子句的计算结果为真,您将获得字典表中的每条记录,如果它的计算结果为假,您将不会获得任何记录。它永远不会将@from 的内容视为字典表中的字段名。

关于c# - 带参数的 SelectCommand 提供空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7916551/

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