C#Sqlite用DataTable抛出ConstraintException [英] C# Sqlite throwing ConstraintException with DataTable
本文介绍了C#Sqlite用DataTable抛出ConstraintException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用C#/ Mono来访问Sqlite数据库。
I'm using C#/Mono to access a Sqlite db.
以下查询在任何数据库应用程序中都可以正常工作,但是当我尝试加载结果时,DataTable会持续抱怨。
The following query works fine in any database app, but DataTable keeps complaining when I try to load the results.
这是一个片段
cmd.CommandText = @"SELECT
sectors.name AS sector_name,
domains.name AS domain_name
FROM
sectors_domains
INNER JOIN domains ON (sectors_domains.domain = domains.id)
INNER JOIN sectors ON (sectors_domains.sector = sectors.id)";
using (var rdr = cmd.ExecuteReader())
{
using (DataTable dt = new DataTable())
{
dt.load(rdr)
}
}
这会抛出一个错误:
ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
正在选择的字段(即相应表中的两个.name字段)都被限制为唯一,非空。
The fields being selected (ie, both .name fields in the respective tables) are constrained as Unique and Non-null.
推荐答案
尝试加载数据的其他方法。 (免责声明:我没有尝试过)
Try a different approach to loading the data. (Disclaimer: I haven't tried this)
DataTable dataTable;
cmd.CommandText = @"SELECT
sectors.name AS sector_name,
domains.name AS domain_name
FROM sectors_domains
INNER JOIN domains ON (sectors_domains.domain = domains.id)
INNER JOIN sectors ON (sectors_domains.sector = sectors.id)";
// Create data adapter
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
// Populate dataTable based on DB query
da.Fill(dataTable);
da.Dispose();
这篇关于C#Sqlite用DataTable抛出ConstraintException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文