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++)
,但同樣的問題,它存儲一次或多次。
我只是想通過插入按鈕點擊用戶生成的新行。
它給錯誤...對象refrence不是設置對象的實例 –
的問題是,在的foreach塊你總是調用同一行(dataGridView1.CurrentRow),和你必須調用foeach語句(行)的行。 – razielx4crazy
你爲什麼不調試和看到的錯誤,一定要知道哪一行拋出異常。也可以嘗試使用column的索引,如下所示:row.Cells [0] – razielx4crazy