gpt4 book ai didi

c# - 如何将新行添加到由 IDataReader 填充的表中?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:35 26 4
gpt4 key购买 nike

在使用 IDataReader 对象(DbDataReader)中包含的信息加载它后,我试图向 DataTable 添加一个新条目> 具体来说。加载顺利,我认为对数据库的查询是正确的。

尝试添加新行时,我得到一个包含以下信息的 ArgumentException:

Cannot set column 'ID'. The value violates the MaxLength limit of this column.

这是我现在的代码:

// Build the query:
DbCommand cmd = dbCon.CreateCommand();
cmd.CommandText = "SELECT ID, Name || ' ' || SurName AS FullName FROM Clients ORDER BY FullName;";
// Execute it:
DbDataReader reader = cmd.ExecuteReader();
// Construct the table out of the query result:
DataTable table = new DataTable();
table .Load(reader);
table.Rows.Add(0, "None");

在数据库 (SQLite) 中,IDINTEGER 类型,NameSurName 都是 VARCHAR。难道我做错了什么? 0 怎么会违反 MaxLength 限制?

最佳答案

最后,您使用我最喜欢的调试器“技巧”之一消除了奇怪的 DataTable 异常,从而解决了这个问题。来自评论:

You can always look what causes the ConstraintException by using the debugger. Execute table.Load(reader) in a QuickWatch Dialog Box. Afterwards execute table.GetErrors(). Then you can look into the returned rows at their RowError property. Voilà!

因为我正在使用 DbDataAdapter.Fill(DataTable)在几乎所有情况下,我都忘记了 DataTable.Load(IDataReader)根据导入的 IDataReader 的结果集推断模式。但当然它至少需要一个 DataRow 才能这样做。这就是当 DataTable 不为空时它起作用的原因。

关于c# - 如何将新行添加到由 IDataReader 填充的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com