2017-09-26 7 views
0

リーダー変数をインデックスする方法はありますか?選択されているすべてのユーザーにアクセスできますか?これは毎回最初のレコードしか取得しないため、SqlCommandとExecuteReaderの各行の各列へのアクセス

using (SqlCommand cmd = new SqlCommand("Select * from users", con)) 
{ 
    using (SqlDataReader reader = cmd.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      for (int i = 0; i < reader.FieldCount; i++) 
      { 
       user = new Users(reader["name"].ToString(), reader["image_path"].ToString()); 

       //MessageBox.Show(reader[1].ToString() + " " + reader[2].ToString()); 
      } 
     } 
    } 
} 
+0

読者は1つだけです(読者[1]はいません)が、反復は新しい行を返します。私はあなたが必要とするものを正確に理解していません。 – rmjoia

答えて

3

私はあなたがSqlDataReaderの目的を間違って解釈していると思います。

while (reader.Read()) 

スルー

各ループは、返されたデータセットの行を反復します。メッセージボックスに各ユーザーを表示する場合、コードは次のように表示されます。

最後に一緒に参加したすべてのユーザーを表示する場合は、次のようにします。

var users = new List<Users>(); 
    using (SqlCommand cmd = new SqlCommand("Select * from users", con)) 
    { 
     using (SqlDataReader reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       user = new Users(reader["name"].ToString(), reader["image_path"].ToString()); 
       users.Add(user); 
      } 
     } 
    } 

    MessageBox.Show(string.Join(" ", users.Select(x => x.ToString())); 
関連する問題