2

たとえば、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());

4

3 に答える 3

5

これにより、必要な文字列のリストが最速で表示されます。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;
于 2012-12-06T12:21:51.180 に答える
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);

このようにして、ユーザー名は「、」で区切られて印刷されます。

于 2012-12-06T12:39:20.037 に答える
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;
} 
于 2012-12-06T12:25:05.420 に答える