求助:C#使用插入数据库语句失败

图片说明

图片说明

语句如下:
cmd.CommandText = "INSERT INTO phonenumber (phonenumber,name) " + " VALUES (@phonenumber, @name)";
cmd.Parameters.AddWithValue("@phonenumber", rc.手机号码);
cmd.Parameters.AddWithValue("@name", rc.名称);
cmd.ExecuteNonQuery();

错误信息:
SQLite error (1555): abort at 12 in [INSERT INTO phonenumber (phonenumber,name) VALUES (@phonenumber, @name)]: UNIQUE constraint failed: phonenumber.phonenumber
“System.Data.SQLite.SQLiteException”类型的第一次机会异常在 System.Data.SQLite.dll 中发生

你的手机号重复了,检查下,是不是手机号码为空或者和现有数据重复。

主键是号码?检查看看是 编码问题还是 已经存在有了主键,然后重复了

把“rc.手机号码”和“ rc.名称”换成你要插入的值,看出错不,然后再跟踪 “rc.手机号码”和“ rc.名称”的值。试一下就知道问题了。

你的手机号码这个字段在数据库中被设置为主键。被设置为主键的字段是不允许记录值重复的。而你插入的手机号码在数据库中已经存在了。违反了主键唯一性的约束。所以出现这样的错误。

主键约束,记录已存在不允许插入

主键有重复的记录,导致插入数据失败~~~~(>_<)~~~~

可以插入的时候IGNORE忽略重复值,
也可以用INSERT INTO ...ON DUPLICATE KEY UPDATE...实现重复值根据主键进行更新,新数据插入的操作。

参考自:
MySQL insert用法详解 http://www.data.5helpyou.com/article421.html

首先,我不相信你的表只有这两列数据,请验证一下该表的其他列有没有必填项,有的话请在SQL语句里加上;其次,看主键是什么,是不是主键重复;
第三,调试把SQL语句抓出来,在SQL中直接执行看报不报错。

调试咯 一个个看 你调用SQL server profilers 监测下 错的也就报出来了(SQL )

直接看你的表定义,应该有唯一性约束导致的

你把这个表数据全部清了再运行一下程序试试,,,不是数据库就是你的代码有问题。。。或者是页面没获取到值为空了