2016-07-29 109 views
0

こんにちは私はリストを返すメソッドを持っていますが、私は望ましくない結果を得ています。下のコードで何が間違っているか教えてください。リストにSqlDataReaderの値を格納する方法<class>?

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
    blog.Id = Convert.ToInt16(reader["id"]); 
    blog.email = reader["email"].ToString(); 
    blog.description = reader["description"].ToString(); 
    blog.date =Convert.ToDateTime(reader["date"]); 
    blogslist.Add(blog); 
} 
+1

望ましくない結果は何ですか?エラーメッセージとは何ですか?間違った結果?それは何ですか ?空リスト?特定の列のデータが間違っています。あなたの答えを更新し、具体的にしてください。 – user3185569

+0

ブログテーブルには4つの異なるレコードがあり、reader.read()の後にblogslistには4つの異なるレコードの代わりに同じレコードが4回含まれます。 –

答えて

2

ブログがあなたのreader.Read()文の外でインスタンス化&宣言されている、あなたは同じオブジェクト参照にあなたがあなたのリストに繰り返しオブジェクトを見ている理由であるループの周りのたびに更新されています。

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
    var blog = new Blogs(); 
    blog.Id = Convert.ToInt16(reader["id"]); 
    blog.email = reader["email"].ToString(); 
    blog.description = reader["description"].ToString(); 
    blog.date =Convert.ToDateTime(reader["date"]); 
    blogslist.Add(blog); 
} 

あなたの問題を解決する場合は、これをあなたの受け入れられた回答としてください。

+1

彼はプレーンテキストとして最初にコードを投稿しました。それが何とか削除されたのはの部分です。 – user3185569

+0

ありがとうございますuser3185569、その部分を削除します。 –

+0

ありがとうマイケル:-) –

関連する問題