2012-12-06 80 views
0

返回多個值,比如我有一個數據庫名爲DBUSER:SELECT查詢

username: teste 
password: xxxx 
isonline: 1 

username: teste2 
password: xxxx 
isonline: 1 

我認爲這個查詢:

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

將返回兩個阿泰斯特和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

因爲你是顯示爲每條記錄中環的MessageBox –

+0

顯示你的MessageBox如何獲取.. – Anujith

+0

這就是我的方法:公共靜態字符串GetOnline(){ 串 listaOnline; listaOnline = ExecuteQuery(「SELECT * username FROM dbuser WHERE(isonline ='1')」)。ToString(); return listaOnline; }我將它顯示爲MessageBox.Show(DbManager.GetOnline()); – freedowz

回答

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; 
+0

工作的Thx:D – freedowz

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; 
} 
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); 

這樣用戶名會被打印由「」分隔。