更新 SQL 并获取错误

本文关键字:取错误 获取 SQL 更新 | 更新日期: 2023-09-27 18:33:44

嗨,我在从 C# 表单更新 SQL 数据库时遇到很多问题

Fisrt:我将这段代码用于一个名为"更新"的按钮,该按钮直接从文本框中获取值并填充主SQL Server数据库。

SqlConnection cnt = new SqlConnection("Data Source=.;Initial Catalog=db3;Integrated Security=True");
                    SqlCommand cmd = new SqlCommand("update  phone set name=@name,lastname=@lastname,Phone=@Phone,Mobile=@Mobile,Area=@Area,date=@date", cnt);
                    cnt.Open(); 
                    cmd.Parameters.AddWithValue("@name", namebox.Text); 
                    cmd.Parameters.AddWithValue("@lastname", lastbox.Text); 
                    cmd.Parameters.AddWithValue("@Phone", phonebox.Text); 
                    cmd.Parameters.AddWithValue("@Mobile", mobilebox.Text); 
                    cmd.Parameters.AddWithValue("@Area", areabox.Text);
                    cmd.Parameters.AddWithValue("@date", datestring); 
                    cmd.ExecuteNonQuery();    
                    cnt.Close();  

但它在移动列中出现错误:

Violation of UNIQUE KEY constraint 'UQ__phone__5C7E359EA73D3013'. Cannot insert duplicate key in object 'dbo.phone'. The duplicate key value is (4802615).

注意2:我使用此代码选择和查看准备编辑的选定行

1-问题已解决,SQL列是唯一索引,所以我删除了它。
2-没有"位置条件",所以我也修复了它

更新 SQL 并获取错误

where 子句未使用,因此表中的所有行都会更新,因此会生成错误。

添加"WHERE Phone=@phone"及其关联的参数命令。 正如其他人指出的那样,您正在更新,但您没有告诉数据库专门关注单个记录,因此您的命令会更新所有记录。

这对于第一条记录很好,一旦它尝试更新第二条记录,它就会爆炸,因为 phone 对其具有独特的约束,从而阻止任何其他记录具有相同的数据。 这是您的错误消息。

您需要更改更新语句以定位要更新的确切记录。

我认为您应该设置 PK 或更新电话表中的所有行。例如:更新表名设置列名,其中....我希望这会有所帮助