c#
  • sql
  • sql-server
  • sqldatareader
  • 2013-07-18 3 views 0 likes 
    0

    조용한 오랜 시간 동안 내 datagridview "dtg_ksluzby"에서 "pocet"열을 채우기 위해 SqlDataReader를 설정할 수있는 방법이 궁금합니다. 내 코드는 다음과 같이 보일 것입니다 :DataGridview의 SqlDataReader 채우기

    SqlCommand novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz WHERE id='"+vyberradek+"'",spojeni); // I also have column "pocet" in table klisluz, vyberradek is string which selectrs id number 
          spojeni.Open(); 
          SqlDataReader precti2 = novyprikaz2.ExecuteReader(); 
          if (precti2.Read()) 
          { 
           dtg_ksluzby.Columns["pocet"]; // this part I need to improve to fill 
          } 
    

    코드 개선에 도움을 주시겠습니까? 미리 감사드립니다. trippino에 대한

    편집 : "klisluz"열을 (ID, akce, 하위 키, 텍스트, pocet)를 포함하는 테이블에있는

    1. .
      1. 선택 * klisluz에서 하위 키 = ' "+ vyberradek +"'
      2. 테이크 열 pocet와 나는 텍스트를 dtg_ksluzby
    2. 에 열 "텍스트"유사 찾을 경우 dtg_ksluzby로 채우기 : 나는에 필요

    제 설명이 이해하기 쉽기를 바라며, 제 약한 영어를 유감스럽게 생각합니다.

    이 같은
    +0

    데이터가 이미 바인딩되어있는 기존 DataGridview의 열을 업데이트하려고합니까? – Damith

    답변

    1

    사용 무언가 :

     for (int i = 0; i < dtg_ksluzby.Rows.Count; i++) 
         { 
          var row = dtg_ksluzby.Rows[i]; 
          using(var novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz WHERE text LIKE @t AND [email protected]", spojeni)) 
          { 
           novyprikaz2.Parameters.AddWithValue("@t", row.Cells["text"].Value.ToString()); 
           novyprikaz2.Parameters.AddWithValue("@s", vyberradek); 
           spojeni.Open(); 
           SqlDataReader precti2 = novyprikaz2.ExecuteReader(); 
           if (precti2.Read()) 
           { 
            row.Cells["pocet"].Value = precti2["pocet"]; 
           } 
          } 
         } 
    
    +0

    글쎄요, 행을 추가하고 싶지는 않지만 기존 열을 채우는 것이 가능합니까? 대답 해 주셔서 감사합니다. –

    +0

    내 대답을 편집했지만 DB에있는 행의 수와 gridView에 *가 포함되어 있는지 이해할 수 없습니다 –

    +0

    두 번째 코드는 제대로 작동하지만 여러 행을 채우면 맨 위에있는 값만 채워집니다 . 나는 나의 문제를 나쁘게 묘사했다고 생각한다. 5 행처럼 dtg_ksluzby를로드합니다. 그리고 "pocet"의 값으로 각 행을 채우고 싶습니다. 무엇을 바꾸어야합니까? –

    2

    에서 데이터를로드하는 데 사용에게

    using(SqlConnection spojeni = new SqlConnection(conString)) 
    using(SqlCommand novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz " + 
                   "WHERE id = @id",spojeni); 
    { 
        novyprikaz2.Parameters.AddWithValue("@id", vyberradek); 
        spojeni.Open(); 
        using(SqlDataAdapter da = new SqlDataAdapter(novyprikaz2)) 
        { 
         DataTable dt = new DataTable(); 
         da.Fill(dt); 
         dtg_ksluzby.DataSource = dt; 
    
        } 
    } 
    

    데이터 어댑터를 (SQL 인젝션 및 분석 문제를 방지하기 위해) SQL 명령을 구축하기 위해 문자열 연결을 사용하지 마십시오 데이터베이스를 만들고이 DataAdapter 인스턴스를 DataGridView의 DataSource에 전달하십시오.

    관련 문제