2012-12-01 3 views
3

SQL 문 결과를 폼의 콤보 상자에 넣으려고합니다. 나는 대답의 순을 저인망하고 난 이것보다 더 얻을 수 없습니다SQL 문 결과를 목록으로 변환

using (SqlCeConnection c = new SqlCeConnection(
Properties.Settings.Default.CW2_DBConnectionString)) 
{ 
    c.Open(); 

    List<Visit> rows = new List<Visit>(); 

    SqlCeCommand cmd = c.CreateCommand(); 
    cmd.CommandText = "SELECT PICKUP_ID FROM PICKUP"; 

    c.Open(); 
    cmd.ExecuteNonQuery(); 

    SqlCeDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read()) 
    { 

    } 

    cmbPickupID.Items.Add(rows); 
} 

내가 while 루프에 넣어 무엇을 제출해야 할 지 모르겠습니다. 나는 다음과 같은 것을 가지고있다 :

rows.Add(reader["PICKUP_ID"].ToString()); 

분명히 작동하지 않았다. Visit 클래스는 VisitID를 설정하고 가져옵니다. 누구든지 아이디어가 있습니까?

+1

'방문'에는 어떤 종류의 생성자가 있습니까? – dasblinkenlight

+0

SqlCeCommand와 SqlCeDataReader는 모두 'using'블록에 있어야합니다. –

답변

5

첫째을 : 당신이 필요하지 않은 cmd.ExecuteNonQuery();

둘째 : 당신의 Visit 클래스는 속성 PICKUP_ID을 가지고, 당신은 다음, Visit 항목의 목록을 사용하는 경우 당신은 단지 아이디의의를 필요로하는 경우

rows.Add(new Visit() {pickupid = reader["PICKUP_ID"].ToString()}); 

:이처럼, 목록에 단지 문자열을 실제 Visits를 추가해야 n 너는 다만 List<string>를 만들지도 모르다. 그러면 게시 한 코드가 작동합니다.

2

cmd.ExecuteNonQuery(); 없애 버릴까요?

이 시도 :

 while (reader.Read()) 
     { 
      cmbPickupID.Items.Add(reader["PICKUP_ID"].ToString()); 
     } 
1

Reflection과 다른 것들을 사용할 수 있습니다.

Dapper을 사용하는 것이 좋습니다.

Dapper를 사용하여 하나의 쿼리 결과를 하나의 클래스로 변환 할 수 있습니다.

사용 말끔에 대해이 작업을 수행 :

1 : 바로 Visual studio에서 프로젝트를 클릭하고 Manage Nuget Packages를 선택합니다.

2 : search Online 텍스트 상자 유형 Dapper.

3 : 웹에서이 DLL을 검색 한 후에 설치할 수 있습니다 (대부분 인터넷에 연결되어 있습니다).

4 : 만들고, Domain Class

private class DomainClass 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     //public int Sex { get; set; } 
     public SexEnum sex { get; set; } 
    } 

5 : 가장 공손한 유형 (열거 형) 일부 필드로 변환 일부 필드가있는 경우 Sex 필드 좋아해요.

6 : 실행하고 도메인 클래스에 쿼리를 변환 Dapper.SqlMapper를 사용 finilly과 :

var connectionStr = "Server=ArdalanShahgholiPC;Database=Dapper;User Id=sa;Password=sa;"; 
SqlConnection sqlConn = new SqlConnection(connectionStr); 

7 : 연결 문자열 및 sqlConnection 개체를 만듭니다.

IList<DomainClass> TestList = Dapper.SqlMapper.Query<DomainClass>(
           sqlConn, "Select * From ATest").ToList(); 

TestList을 사용할 수 있습니다.