2017-01-26 1 views
-2

현재 응용 프로그램에서 데이터 표보기에서 단일 행을 선택하고 모두 저장할 수있는 코드 스 니펫이 있습니다. 열 정보를 원하는대로 할 수있는 변수에 저장합니다. 나는이 정보를 주로 한 SQL 데이터베이스 테이블에서 다른 데이터베이스 테이블로 보내는 데 사용합니다. 한 행에 지정된 셀만 보내는 것이 좋습니다. 지금은 여러 행을 선택하고 만 SQL 데이터베이스에 해당 행에서 지정된 열을 삽입 할 수 있도록하려면, 그러나C# 데이터 표보기, SQL Server : 여러 행을 선택한 다음 SQL 테이블에 지정된 열이있는 선택된 행을 삽입하십시오.

string ID = dataGridView1.SelectedRows[0].Cells[0].Value + string.Empty; 
      string itemOne= dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty; 
      string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty; 
      string itemThree= dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty; 


      var vItemOne = itemOne; 
      var vItemTwo= itemTwo; 
      var vItemThree= itemThree; 
      // ETC.. 

: 여기

내가 하나의 행을 수행하는 방법이다.

나는 위의 코드를 수정하려고 시도했지만 분명히 작동하지 않습니다.

저는 루프가 필요하다고 생각합니다. 실제로 루프를 많이 사용하지 않았기 때문에 루프를 만들고, 특정 열을 건너 뛰고, 데이터베이스에 삽입하는 방법을 모르겠습니다.

이것은 현재 시도하고있는 것이지만 어딘가에 어수선하게 보이고 있습니다.

using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn)) 
      { 

      for (int i = 0; i < dataGridView1.SelectedRows.Count; i++) 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandText = "INSERT INTO dbo.[" + txtJobName.Text + "] ([Item One], [Item Two], [Item Three]) VALUES(@ItemOne,@ItemTwo,@ItemThree)"; 

       cmd.Connection = con; 

       string strItemOne = this.dataGridView1.SelectedRows[i].Cells[1].Value + string.Empty; 
       string strItemTwo = this.dataGridView1.SelectedRows[i].Cells[2].Value + string.Empty; 
       string strItemThree = this.dataGridView1.SelectedRows[i].Cells[3].Value + string.Empty; 


       //Parameters 
       cmd.Parameters.AddWithValue("@ItemOne", strItemOne); 
       cmd.Parameters.AddWithValue("@ItemTwo", strItemTwo); 
       cmd.Parameters.AddWithValue("@ItemThree", strItemThree); 

       //execute 
       cmd.ExecuteNonQuery(); 

       //close connection 
       con.Close(); 
      } 
     } 

... 내가 문자열로 선택한 행을 반환 할 때

dataGridView.SelectedRows.Count; i++ 증가하지 않는 것 디버깅 및 0에 머무는 동안 ... 나는 오류 메시지가 표시됨 . 선택한 행에서 여전히 값을 반환하면 안됩니까?

나는 내 루프가 잘못되었다는 가정하에있다.

누구든지 내 문제를 해결해 줄 수 있습니까?

+0

'에 대한을 사용해야합니다 매개 변수로 전달할 수 있도록 임의 및 모든 열에 대해 외부에서 선언 된 변수 – MethodMan

+0

[NullReferenceException은 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/4660142/what) -is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

감사합니다. @MethodMan, 그것을 시도해 보겠습니다. 중복 된 게시물이 아닙니다 ... – Mokey

답변

0

은 간단하게 당신이 할 필요가 거기에서 각 문에 당신은 foreach 루프를하고이 `foreach는 (dataGridView.SelectedRows에서에 DataGridViewRow 행) 같은 것을 사용할 필요가

string itemOne= dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty; 
string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty; 
string itemThree= dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty; 

var vItemOne = itemOne; 
var vItemTwo= itemTwo; 
var vItemThree= itemThree; 

foreach (DataGridViewRow row in dataGridView1.SelectedRows) 
{ 
    //Insert Query Here 
} 
관련 문제