例如,我有一个名为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());
答案 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);
这样,用户名将以“,”分隔打印。