2016-01-13 83 views
-1

我有一個包含數據的DataGridView。這裏是圖片:無法正確插入數據到數據庫

當我成功插入從DataGridView數據到一個表,結果變成這樣

有在數量小計和一個零數目。這裏是我的代碼時,我插入來自DataGridView數據表

for (int i = 0; i < dataGridView1.Rows.Count; i++) 
{ 
    con.execute("INSERT INTO SalesDetail VALUES('" + txtID.Text + "','" 
        + dataGridView1.Rows[i].Cells["Column7"].Value + "','" 
        + dataGridView1.Rows[i].Cells["Column3"].Value + "','" 
        + dataGridView1.Rows[i].Cells["Column5"].Value + "','" 
        + dataGridView1.Rows[i].Cells["Column6"].Value + "')"); 
    //con.execute("UPDATE KerupukDetail SET currentStock = currentStock - '" + dataGridView1.Rows[i].Cells["Column3"].Value + "' WHERE kerupukID='" + dataGridView1.Rows[i].Cells["Column7"].Value + "' and fryingID='" + textBoxriedID.Text + "'"); 
} 

而且我ClassConnection連接到數據庫:

class Connect 
{ 
    SqlConnection con; 
    public Connect() 
    { 
     String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Database1.mdf;Integrated Security=True;User Instance=True"; 
     con = new SqlConnection(connectionString); 
    } 

    public DataTable executeSelect(String query) 
    { 
     con.Open(); 
     SqlDataAdapter adapter = new SqlDataAdapter(query, con); 
     DataTable dt = new DataTable(); 
     adapter.Fill(dt); 
     con.Close(); 
     return dt; 
    } 

    public void execute(String query) 
    { 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(query, con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
} 

怎麼樣解決這個問題,並刪除零號的代碼?

注意:在一個SalesID中可以包含一個或多個kerupukID。 txtID是SalesID

enter image description here

enter image description here

+0

我強烈建議更改您的查詢以利用參數的初學者..也使用調試器來遍歷代碼並檢查所有您嘗試插入的值。你需要正確地命名你的方法以及'con.execute(「INSERT INTO SalesDetail VALUES('」'改變這個以將列名放入插入以及 – MethodMan

+0

我很抱歉,但我只能以這種方式理解。我是一個新手:)所以,如何解決這個問題?hehe –

+0

'新手'或不..這不是一個藉口,你可以使用谷歌快速找到關於如何格式化一個'INSERT'語句使用C#現在來吧.. – MethodMan

回答

0

你需要小於dataGridView1.Rows.Count-1,因爲你有額外的行對於在DataGridView添加新行。

或者你可以檢查isNewRow並且只在isNewRow返回false時執行你的插入。

  for (int i = 0; i < dataGridView1.Rows.Count; i++) 
      { 
       if (!dataGridView1.Rows[i].IsNewRow) 
       { 
        //perform your insert 
       } 
      }