2013-09-24 5 views
0

남자 나는 그리드가있어서 텍스트 입력을 검색하고 데이터베이스에 삽입해야합니다. 위의에서 SQL 서버에 둘 이상의 레코드 삽입

아래 그가 그렇게 원하는대로 데이터베이스에 많은 열을 전달하는 사용자를 허용 같은 그리드 보인다. 나는 아래의 방법을 사용한다.

private void insert() 
     { 
      connection.Open(); 

      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", gvAdditionalDetails.Rows[i].Cells[1].Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", gvAdditionalDetails.Rows[i].Cells[2].Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 

위의 방법 루프는 tetxbox 컨트롤이 드롭 다운 선택과 설명이 열 유형에 대해 null을 반환하는 방법을 혹시, 내 그리드를 던져. 그리드에서 선언 되었기 때문에이 컨트롤을 무심코 호출 할 수 없습니다. 드롭 다운에서 선택한 항목의 텍스트와 텍스트 상자의 삽입 된 텍스트를 어떻게 검색합니까? 코드 gvAdditionalDetails.Rows[i].Cells[1].Text.Trim()은 null을 반환합니다. 모든

+0

지금까지 시도를 보여줄 수 있습니까? –

+0

@ Mike sure. 죄송합니다. 이전에 귀하의 의견을 통보하지 않으려 고 바빴습니다. 지금 업데이트를 확인할 수 있습니까? –

+0

고마워요, 지금은 잘 모르겠어요. –

답변

3

당신은있는 gridview 행 내부의 컨트롤을 참조 할 필요가있다.

private void insert() 
     { 
      connection.Open(); 

      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", ((DropdownList)gvAdditionalDetails.Rows[i].FindControl("DropDownListType")).SelectedItem.Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", ((TextBox)gvAdditionalDetails.Rows[i].FindControl("txtDescription")).Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 
2
INSERT INTO Table (Column1, Column2) VALUES 
(Value1, Value2), (Value1, Value2) 
+0

MSSQL 2005에서 그렇게 할 수는 없지만 http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple-rows-without-repeating-the-insert-into-dbo-blah- part –

+0

2005 년 이전에는 할 수 없지만 2005 년이 질문에 지정되어 있다고 생각하지 않습니다. 나는 2008/2012가이 문법으로 모두 괜찮다고 생각한다. – Greg

+0

고마워. 하지만 루프를 통해 하나의 행을 삽입합니다. 위의 업데이트를 참조하십시오. 그러나 난 couldnt 두 입력란에서 입력을 검색 할 수 있습니다. –

0
INSERT INTO Table (Column1, Column2) 
select value1, value2 
union all 
select value1, value2 
union all 
select value1, value2 
0

감사합니다. 나는 루프를 통해 다음과 같이 입력을 검색한다. 나는 그것을 그것의 가장 좋은 방법이라고 확신하지 않지만, 그것은 나를 위해 일했다.

private void insert() 
     { 
      connection.Open(); 


      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       DropDownList DropDownListType = 
         (DropDownList)gvAdditionalDetails.Rows[i].Cells[1].FindControl("DropDownListType"); 



       TextBox TextBoxDescription = 
       (TextBox)gvAdditionalDetails.Rows[i].Cells[i].FindControl("txtDescription"); 

       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", DropDownListType.SelectedItem.Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", TextBoxDescription.Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 
관련 문제