2014-02-06 48 views
1

我使用C#有DataGridView在Windows窗體。的DataGridView重複或不保存新行到數據庫

的數據顯示成功和更新也正在做成功。

但問題是插入。當我嘗試使用迭代將多個數據插入數據庫時​​,它將13次存入數據庫,因爲數據網格最初顯示來自數據庫的13條記錄。我的意思是它多次存儲新行(datagridview行數)到數據庫中。

讓我們假設我要救兩行到DATABSE但它存儲1日一行到數據庫13倍(datagridview的總行數)。

請檢查在那裏我做的錯誤

注:我想用單一的DataGridView顯示,更新,插入和刪除數據庫中的數據。我有按鈕,我想開始插入數據庫的所有新行。

我的代碼如下

string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString; 
using (SqlConnection sqlconn = new SqlConnection(connection)) 
{ 
    sqlconn.Open();      
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     if (row.IsNewRow) 
     { 
      using (SqlCommand sqlcomm = sqlconn.CreateCommand()) 
      { 
       //sqlcomm.CommandText = "Insert into QF (profileID, UserNameLogInName, UserFullName,Email, forumtitle, subtitle, subjecttitle ,noreply, noview , qtags ,Question ,Questiondetails ,questionstatus, qdate, Status ,todate) values(@status)"; 
       sqlcomm.CommandText = "Insert into QF (UserNameLogInName,Status) values(@UserNameLogInName,@status)"; 
       try 
       {         
        sqlcomm.Parameters.AddWithValue("UserNameLogInName", dataGridView1.CurrentRow.Cells["UserNameLogInName"].Value.ToString()); 
        sqlcomm.Parameters.AddWithValue("Status", dataGridView1.CurrentRow.Cells["Status"].Value.ToString()); 
        sqlcomm.ExecuteNonQuery(); 
        //MessageBox.Show(dataGridView1.Rows[Convert.ToInt32(RecordIndexNumber.Text)].Cells[Convert.ToInt32(ColInexNum.Text)].Value.ToString()); 
       } 
       catch (Exception ex) 
       { 
        btnInsert.Text = ex.Message.ToString(); 
       } 
      } 
     } 
    } 
} 

我已經嘗試過了if (!row.IsNewRow),它僅存儲一行。沒有它將多個不需要的時間存儲到數據庫中。

我也使用for (int i = 0; i < dataGridView1.Rows.Count - 1; i++),但同樣的問題,它存儲一次或多次。

我只是想通過插入按鈕點擊用戶生成的新行。

回答

0

試試這個:

sqlcomm.Parameters.AddWithValue("UserNameLogInName", row.Cells["UserNameLogInName"].Value.ToString()); 
sqlcomm.Parameters.AddWithValue("Status", row.Cells["Status"].Value.ToString()); 
+0

它給錯誤...對象refrence不是設置對象的實例 –

+0

的問題是,在的foreach塊你總是調用同一行(dataGridView1.CurrentRow),和你必須調用foeach語句(行)的行。 – razielx4crazy

+0

你爲什麼不調試和看到的錯誤,一定要知道哪一行拋出異常。也可以嘗試使用column的索引,如下所示:row.Cells [0] – razielx4crazy

相關問題