从SELECT查询返回多个值

时间:2012-12-06 11:58:55

标签: c# sql

例如,我有一个名为dbuser的数据库:

username: teste
password: xxxx
isonline: 1

username: teste2
password: xxxx
isonline: 1

我以为这个查询:

"SELECT username FROM dbuser  WHERE (isonline ='1')"

会返回teste和teste2,但是当我在MessageBox中询问结果时,teste和teste2都在线,它只显示teste,但是当我关闭teste连接时,它会在MessageBox中显示teste2。我猜它只返回第一行给我,所以我怎么能得到所有的值?

这是方法代码:

public static string GetOnline() 
{ 
  string listaOnline; 
  listaOnline = ExecuteQuery("SELECT * username FROM dbuser WHERE (isonline ='1')").ToString();
  return listaOnline;
} 

我将其显示为MessageBox.Show(DbManager.GetOnline());

3 个答案:

答案 0 :(得分:4)

这应该以最快的方式为您提供所需的字符串列表。 reader.GetString(0)表示从索引为0的列中获取sting值(因此是第一个)。

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

using (SqlConnection connection = new SqlConnection(databaseConnectionString))
{
  connection.Open();
  using (SqlCommand command = new SqlCommand(query, connection))
  {
    command.CommandType = CommandType.Text;
    using (SqlDataReader reader = command.ExecuteReader())
    {
      while (reader.Read())
      {
        result.Add(reader.GetString(0));
      }

      reader.Close();
    }
    command.Cancel();
  }
}

return result;

答案 1 :(得分:0)

尝试以下内容,为用户创建一个类:

[Table(Name = "foo")]
public class Users
{
   [Column(Name = "user_name")]
   username {get; set;};

   [Column(Name = "user_pword")]
   password {get; set;};

   [Column(Name = "user_isonline")]
   isonline {get; set;};
}


public static List<Users> GetOnline() 
{ 
   List<Users> listaOnline = new List<Users>(); 
   listaOnline = ExecuteQuery("SELECT * username FROM dbuser WHERE (isonline ='1')");
   return listaOnline;
} 

答案 2 :(得分:0)

你可以做这样的事情,它只是代码的轮廓,会给你一些提示(需要在名称之间添加一些空格/特殊字符)。

string user = string.Empty;
foreach (var item in DbManager.GetOnline())
{
    user += item;
}
MessageBox.Show(user);

希望它会有所帮助..

您也可以通过以下方式完成此操作:

List<string> listUser= new List<string>();
listUser =DbManager.GetOnline();
string users= string.Join(",", listUser.ToArray());
 MessageBox.Show(users);

这样,用户名将以“,”分隔打印。