2016-07-29 6 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

블로그 테이블에는 reader.read() 이후 4 개의 다른 레코드가 있습니다. 블로그 목록에는 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

감사합니다. Michael :-) –