c# - SELECT 语句不返回任何内容

标签 c# sql-server select

我的问题是执行该语句时结果为空,即使在 Microsoft 的 SQL Server Studio 中执行它时也是如此。

//This has two values in it (Ex: 4 and 2)
string[] arr2 = groupListValues.Split('-');

List<string> userID = new List<string>();

// Connect to the database
SqlConnection gconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectinfohere"].ConnectionString);
gconn.Open();
SqlCommand command1 = new SqlCommand();
command1.Connection = gconn;
String sql = "SELECT ID FROM Users WHERE Group = @groupID";
command1.CommandText = sql;
command1.Parameters.Add(new SqlParameter("@groupID", ""));
SqlDataReader reader = command1.ExecuteReader();              

//issue is in this loop
foreach (string str in arr2)
{
    command1.Parameters["@groupID"].Value = str;
    while (reader.Read())
    {
        userID.Add(reader["ID"].ToString());
    }
}

不确定是什么问题。我在 SQL 语句中获得的“ID”是 bigint 类型,这会导致问题吗?

我在 foreach 循环中设置参数的原因是,对于 arr2 中的每个值,都对应一个可以附加多个用户的组。所以我需要遍历它,让用户附加到每个 groupID,然后将他们所有的 ID 添加到列表中。

最佳答案

你的代码有两个问题:

第一个是在执行读取器后设置@groupID 参数。要修复它,请在设置参数值后执行阅读器,如下所示:

foreach (string str in arr2)
{
    command1.Parameters["@groupID"].Value = str;

    using(SqlDataReader reader = command1.ExecuteReader())
    {
        while (reader.Read())
        {
            userID.Add(reader["ID"].ToString());
        }
    }
}

第二个问题是 Groupreserved keyword在 SQL 中,所以你需要像这样用方括号括起来:

String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";

关于c# - SELECT 语句不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794129/

相关文章:

c# - Web API 错误 : "Cannot insert the value NULL into column ' Id'

sql-server - 使用 Restore-SqlDatabase cmdlet 时无法绑定(bind) RelocateFile

mysql - MYSQL中如何基于一列合并值

java - Selenium (Java) 和获取 Select 元素时遇到问题

c# - 什么算法可以将文本分解成它的组成词?

c# - GZipStream zip文件无效或损坏

c# - 在这个例子中,为什么 For Each 循环比 linq 的外部连接慢?

sql-server - 如果存在相同的值,例如给定的产品名称,如何在 SQL Server 中组合行?

c# - 分配给 SqlXml 参数的 XML 进行了额外编码?

r - 如何从整体中提取数据框的一部分?