在VS中用C#读取sqlite3中的数据,然后Load到DataTable中,出现报错信息:
System.Data.ConstraintException:“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。”
一、车祸现场
从数据库中提取数据,然后装到DataTable中
二、报错信息:
System.Data.ConstraintException:“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。”
三、十年艰辛探索——定位问题
- (1)排除Sql错误
在数据库中执行sql语句排除是否语法错误,检测结果——没有问题
基本上可以明确,这是数据转换的问题,是哪一列的数据报错呢?
- (2)逐个字段(列)排除,看看是哪一列出错
四、分析问题
最后发现,把【用户名】字段剔除后,不在报错。
然后仔细分析这一列的数据,发现有NULL值。
五、解决问题
NULL值填充到DataTable中的时候报错,那就给它转换吧,把NULL转成其它的,处理的方法:
ifnull()
六、测试
七、总结
别人的总结,借用一下: