繁体   English   中英

SELECT语句不返回任何内容

[英]SELECT statement not returning anything

我的问题是,即使在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());
        }
    }
}

第二个问题是Group是SQL中的保留关键字 ,因此您需要使用方括号将其包装,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM