仅在第一行插入数据 [英] Inserting data on only first row

查看:75
本文介绍了仅在第一行插入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨朋友,当我通过参数化查询将数据插入datagridview时,它在第一行成功插入,但是当我第二次尝试插入时,它给出了我唯一的约束错误,这个名称已经存在。实际上我在数据库中的名称列上设置了一个唯一约束。请检查我的循环并告诉我我做错了什么。

Hi friends when i am inserting data into a datagridview by parameterized query it insert successfully on first row but when i try to insert on second time it giving me unique constraint error this name is already exist. Actually i set a unique constraint on name column in database. Please check my for loop and tell me what i doing wrong.

textBox1.Text = "insert";
 cmd = new SqlCommand();
 cmd.CommandType = CommandType.StoredProcedure;
 cmd.Connection = con;
 cmd.CommandText = "prcfunddetails";
 cmd.Parameters.Add("@action", SqlDbType.VarChar);
 cmd.Parameters.Add("@fundid", SqlDbType.Int);
 cmd.Parameters.Add("@name", SqlDbType.VarChar);
 cmd.Parameters.Add("@startdate", SqlDbType.DateTime);
 cmd.Parameters.Add("@enddate", SqlDbType.DateTime);

 for (int i = 0; i<dataGridView1.Rows.Count; i++)
 {
     cmd.Parameters["@action"].Value = textBox1.Text;
     cmd.Parameters["@fundid"].Value = dataGridView1.Rows[i].Cells[0].Value;
     cmd.Parameters["@name"].Value = dataGridView1.Rows[i].Cells[1].Value;
     cmd.Parameters["@startdate"].Value = dataGridView1.Rows[i].Cells[2].Value;
     cmd.Parameters["@enddate"].Value = dataGridView1.Rows[i].Cells[3].Value;
     cmd.ExecuteNonQuery();

 }
 MessageBox.Show("Records successfully inserted");

推荐答案

你可能不想要一个循环,或者至少你不想要这样的循环。

您只想INSERT 行:如果现有行已更改,则需要UPDATEd。否则,您将始终尝试插入已存在的行。



因此要么检查数据是否已经存在,如果数据已经更改,请检查UPDATE,或者告诉用户它存在:名字可以很容易地复制:我在街上独自知道三个理查兹,其中两个拥有相同的姓氏,只留下一个角色!
You probably don't want a loop, or at least you don't want one like that.
You only want to INSERT new rows: existing rows need to be UPDATEd if they have changed instead. Otherwise, you will always be trying to insert rows that already exist.

So either check if the data exists already and UPDATE if it is changed, or tell your user that it exists: names can be duplicated pretty easily: I know three Richards in my street alone, and two of them have the same family name, baring only one character!


这篇关于仅在第一行插入数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆