gpt4 book ai didi

c# - SQL 查询返回列表

转载 作者:行者123 更新时间:2023-11-29 02:46:27 25 4
gpt4 key购买 nike

我似乎无法让它工作:

我的表格列标题是“流派”“艺术家”“专辑”我传递的参数是 (type, filter, value) ("artist", "genre", "Rock"),其中数据库中有两行,流派为“Rock”。

当我跟踪调试器时,'while (reader.Read())' 必须返回 false,因为从未进入循环,因此没有任何内容写入列表。

    public static List<String> getWithFilter(String type, String filter, String value)
{

List<String> columnData = new List<String>();

string query = "SELECT @type FROM Music WHERE" +
" @filter = '@value'";
SqlConnection connection = Database.GetConnection();
SqlCommand getData = new SqlCommand(query, connection);
getData.Parameters.AddWithValue("@type", type);
getData.Parameters.AddWithValue("@filter", filter);
getData.Parameters.AddWithValue("@value", value);
connection.Open();

using (connection)
{
using (getData)
{
using (SqlDataReader reader = getData.ExecuteReader())
{
while (reader.Read())
{
columnData.Add(reader.GetString(0));
}
}
}
}
return columnData;
}

最佳答案

您不能为列名使用参数,并且在使用它们时不要在它们两边加上引号。现在你的查询相当于

SELECT 'artist' FROM Music WHERE 'genre' = '@value'

您可以改为执行以下操作。

string query = "SELECT " + type + " FROM Music WHERE " + filter + " = @value";

只需删除创建 @type@fitler 参数的行即可。

关于c# - SQL 查询返回列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513120/

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