pfi*_*rno 1 c# sql-server select
我的问题是,执行语句时结果是空的,即使在Microsoft的SQL Server工作室中执行它时也可以.
//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());
        }
    }
}
第二个问题是SQL中Group的保留关键字,所以你需要用方括号包装它,如下所示:
String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";
| 归档时间: | 
 | 
| 查看次数: | 70 次 | 
| 最近记录: |