Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridview重复数据或不将新行保存到数据库_C#_Mysql_Sql_Database_Datagridview - Fatal编程技术网

C# DataGridview重复数据或不将新行保存到数据库

C# DataGridview重复数据或不将新行保存到数据库,c#,mysql,sql,database,datagridview,C#,Mysql,Sql,Database,Datagridview,我使用C#在windows窗体中创建了DataGridView 数据显示成功,更新也成功完成 但问题在于插入。当我尝试使用迭代将多个数据插入数据库时,它会在数据库中存储13次,因为datagrid最初显示数据库中的13条记录。我的意思是它将新行多次存储到数据库中(datagridview行数) 假设我想将两行保存到数据库中,但它将第一行存储到数据库中13次(datagridview行的总数) 请检查我哪里做错了 注意:我想使用SingleDataGridView来显示、更新、插入和删除数据库中的

我使用C#在windows窗体中创建了
DataGridView

数据显示成功,更新也成功完成

但问题在于插入。当我尝试使用迭代将多个数据插入数据库时,它会在数据库中存储13次,因为datagrid最初显示数据库中的13条记录。我的意思是它将新行多次存储到数据库中(datagridview行数)

假设我想将两行保存到数据库中,但它将第一行存储到数据库中13次(datagridview行的总数)

请检查我哪里做错了

注意:我想使用SingleDataGridView来显示、更新、插入和删除数据库中的数据。我有一个按钮,我想通过它开始将所有新行插入数据库

我的代码在下面

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();
                 }
             }
         }
     }
 }
如果(!row.IsNewRow)它只存储一行,我就尝试了
。如果没有,它会将多个不需要的时间存储到数据库中

我还将
用于(int I=0;I
,但同一问题可能会存储一次或多次

我只想在单击按钮时插入用户生成的新行。

尝试以下操作:

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

它给出了错误。。。对象引用未设置对象的实例问题是,在foreach块中,您总是调用同一行(dataGridView1.CurrentRow),并且必须调用foeach语句的行(row)。为什么不调试并查看错误的位置,确保知道哪一行引发异常。也可以尝试使用column的索引,如下所示:row.Cells[0]