C# SELECT语句不返回任何内容
我的问题是,执行该语句时,结果是空的,即使在Microsoft的SQL server studio中执行该语句时,结果仍然有效C# SELECT语句不返回任何内容,c#,sql-server,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 gco
//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());
}
}
//其中有两个值(例如:4和2)
字符串[]arr2=groupListValues.Split('-');
List userID=new List();
//连接到数据库
SqlConnection gconn=新的SqlConnection(ConfigurationManager.ConnectionString[“ConnectionInfo”].ConnectionString);
gconn.Open();
SqlCommand command1=新的SqlCommand();
command1.Connection=gconn;
String sql=“从用户中选择ID,其中Group=@groupID”;
command1.CommandText=sql;
command1.Parameters.Add(新的SqlParameter(“@groupID”,“”));
SqlDataReader=command1.ExecuteReader();
//问题就在这个循环中
foreach(arr2中的字符串str)
{
command1.参数[“@groupID”].Value=str;
while(reader.Read())
{
添加(读卡器[“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());
}
}
}
String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";
第二个问题是,组
是SQL中的一个组,因此需要用方括号将其括起来,如下所示:
foreach (string str in arr2)
{
command1.Parameters["@groupID"].Value = str;
using(SqlDataReader reader = command1.ExecuteReader())
{
while (reader.Read())
{
userID.Add(reader["ID"].ToString());
}
}
}
String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";
您的代码有两个问题: 第一个是在执行读取器后设置
@groupID
参数。要修复此问题,请在如下设置参数值后执行读取器:
foreach (string str in arr2)
{
command1.Parameters["@groupID"].Value = str;
using(SqlDataReader reader = command1.ExecuteReader())
{
while (reader.Read())
{
userID.Add(reader["ID"].ToString());
}
}
}
String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";
第二个问题是,组
是SQL中的一个组,因此需要用方括号将其括起来,如下所示:
foreach (string str in arr2)
{
command1.Parameters["@groupID"].Value = str;
using(SqlDataReader reader = command1.ExecuteReader())
{
while (reader.Read())
{
userID.Add(reader["ID"].ToString());
}
}
}
String sql = "SELECT ID FROM Users WHERE [Group] = @groupID";
在执行读卡器之前,您不应该设置
groupID
参数值吗?嗯,groupID需要设置为arr2中的每个值。我将编辑我的帖子以添加原因。command1.Parameters[“@groupID”].Value=str
foreach循环中这一行的用途是什么..尝试使用SqlDataReader=command1.ExecuteReader()在command1.Parameters[“@groupID”].Value=str之后的循环内的code>
是否只返回一列GroupId
如果是,为什么不使用一行代码将数据表返回到列表List listGroupID=dt.AsEnumerable().ToList()代码>更改您的代码以使用.Fill()
方法填充数据表',然后您可以获得ItemArray
属性在执行读卡器之前,您不应该设置groupID
参数值吗?好的,groupID需要设置为arr2中的每个值。我将编辑我的帖子以添加原因。command1.Parameters[“@groupID”].Value=str
foreach循环中这一行的用途是什么..尝试使用SqlDataReader=command1.ExecuteReader()在command1.Parameters[“@groupID”].Value=str之后的循环内的code>
是否只返回一列GroupId
如果是,为什么不使用一行代码将数据表返回到列表List listGroupID=dt.AsEnumerable().ToList()代码>更改代码以使用.Fill()
方法填充数据表',然后可以在ItemArray
属性中获取