2013-12-10 2 views
0

DataGridView1에서 MySql 데이터베이스에 새 값을 추가하고 싶습니다. 코드 자체는 정확하고 Visual Studio 2012에서는 오류가없는 것으로 보이지만 db에 데이터가 삽입되어 있지 않습니다.DataGridView 값을 MySql 데이터베이스에 삽입하십시오. C#

private void button2_Click(object sender, EventArgs e) 
{ 
    confirm exec = new confirm();  
} 

public class confirm 
{ 
    public void method(DataGridViewCellEventArgs f) 
    { 
     DataGridView dataGridView1 = new DataGridView(); 
     Label label1 = new Label(); // contains User ID which is used for payer_code 
     Label label6 = new Label(); // contains current dayTime 

     foreach (DataGridViewRow row in dataGridView1.Rows) 
     { 
     if ((bool)dataGridView1.Rows[f.RowIndex].Cells["paidDataGridViewTextBoxColumn"].Value == true) 
     { 
      try 
      { 
       string MyConnectionString = "Server=localhost; Database=contractsdb; Uid=root; Pwd="; 
       MySqlConnection connection = new MySqlConnection(MyConnectionString); 
       MySqlCommand cmd = new MySqlCommand(); 
       cmd = connection.CreateCommand(); 
       connection.Open(); 
       cmd.CommandText = "INSERT INTO payments(pay_name, pay_code, payer_code, pay_sum, pay_date)VALUES(@pay_name, @pay_code, @payer_code, @pay_sum, @pay_date)"; 
       cmd.Parameters.AddWithValue("@pay_name", dataGridView1.Rows[f.RowIndex].Cells["contractnameDataGridViewTextBoxColumn"].Value); 
       cmd.Parameters.AddWithValue("@pay_code", dataGridView1.Rows[f.RowIndex].Cells["contractcodeDataGridViewTextBoxColumn"].Value); 
       cmd.Parameters.AddWithValue("@payer_code", label1.Text); 
       cmd.Parameters.AddWithValue("@pay_sum", dataGridView1.Rows[f.RowIndex].Cells["sumDataGridViewTextBoxColumn"].Value); 
       cmd.Parameters.AddWithValue("@pay_date", label6.Text); 
       cmd.ExecuteNonQuery(); 
       connection.Close(); 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     } 
    } 
} 
+0

'if' 체크에 들어 가지 않을 수도 있습니다. – Shaharyar

+0

글쎄, 그럴 수도 있지만 여기에서 길을 잃었습니다. 다른 방법으로 작동합니까? –

+0

'connection.Open()'줄에'중단 점'을 설정하고 거기에 도착하는지 확인하십시오. 제 생각에는 그렇지 않습니다. – Shaharyar

답변

0

당신이 OOP에 대해 뭔가 오해 생각 : 여기 내가 사용하는 코드입니다.

당신의 confirm 클래스 메소드는 메소드를 호출 datagridview1의 참조를 (당신은 그래서 결코 심지어 foreach 루프에 간다 빈 datagridview를 작성하는)

public void method(DataGridView datagridview1) //remove your first argument, you don't need it anymore 
{ 
    //delete the line "DataGridView dataGridView1 = new DataGridView();" 
    //and keep the rest of the code as it is 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     if(row.Cells["paidDataGridViewTextBoxColumn"].Value == true) //it will check every row, and you don't need "DataGridViewCellEventArgs" argument now 
     { 
      try 
      { 
       //your code, it will be same here 
      } 
     } 
} 

이 있어야합니다 :이처럼 마십시오

private void button2_Click(object sender, EventArgs e) 
{ 
    confirm exec = new confirm();  
    exec.method(datagridview1); //pass "datagridview1" reference 
} 

(당신이하고 있던 같은 button_click 이벤트를 사용) 원래 datagridview1의 참조 번호를 confirm 클래스로 전달합니다.

+0

죄송합니다. 프로그래밍이 처음이었습니다. "yourfirstargument"대신에 무엇을 넣어야합니까? –

+0

이벤트 인수입니다. 언제 어디에서 '방법'이라고 부릅니까? – Shaharyar

+0

@ user3041437 코드를 업데이트했습니다. 지금 받으시 길 바랍니다. – Shaharyar

관련 문제