• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

WinForm中DbDataAdapter.Update()方法出现莫名其妙的System.ArgumentOutOfRangeException异常[UP有分]

Mr.Osc 2004-05-07 12:02:08
数据表结构
person_table1:
person_no
1
2
...

phone_table1:
phone_no phone person_no
1 13800000001 2
2 13800000002 3
3 13800000003 1
...

主表person_table1与从表phone_table1通过person_no相关联
数据库连接及数据集的填充都正常,数据集中包含关系以及主键信息。

person_table1的视图在界面上与TextBox类型的控件绑定,phone_table1的视图与DataGrid绑定。
DataView dataView_Person1 = new DataView(tablePerson1, "", "",
DataViewRowState.CurrentRows);
// rel_PersonTPhone1为主从表之间的relation
DataView dataView_Phone1 = dataView_Person1[0].CreateChildView(rel_PersonTPhone1);
// 在实际程序中dataView_Phone1的数据会根据dataView_Person1的导航而改变

this.BindingContext[dataView_Phone1].EndCurrentEdit();
if (ds_Db1.HasChanges())
{
System.Data.DataSet ds_Changes = ds_Db1.GetChanges();
//在这步出现异常!
adapter_Phone1.Update(ds_Changes, "phone_table1");
}

异常信息:{"索引超出范围。必须为非负值并小于集合大小。\r\n参数名: index" }
Type: System.ArgumentOutOfRangeException
HResult: -2146233086
Source: "System.Data"

.NET FrameWord:1.1
数据库:Firebird1.5
数据访问驱动:Firebird .NET Provider1.5.2-NET1.1
...全文
185 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lvenlee 2004-05-07
索引超标嘛,你就找有索引的地方进行调试了
回复
Mr.Osc 2004-05-07
to orswanic():
是这样的,问题找到了,已解决,谢谢大家。
to zhjboss(小张):
谢谢你和我在QQ上讨论。
回复
orswanic 2004-05-07
你这个问题我遇见过,我想是你在建立phone_table1的时候给Command对象传递参数的个数和SQL语句的参数个数不符合。
你检查一下吧。
回复
Mr.Osc 2004-05-07
to CMIC(大象):
你说的方法我觉得更新整个数据集不好,如果数据很多,但是需要更新的只有1条会浪费效率,但是我也试验了,还是出现异常。
回复
CMIC 2004-05-07
if (ds_Db1.HasChanges())
{
System.Data.DataSet ds_Changes = ds_Db1.GetChanges();
//在这步出现异常!
adapter_Phone1.Update(ds_Changes, "phone_table1");
}
------------------------------------------------------------------
if (ds_Db1.HasChanges())
{
adapter_Phone1.Update(ds_Db1, "phone_table1");
}
回复
zhjboss 2004-05-07
哪里要用update的话,就要加SqlCommandBuilder这是sql,access的OleDbCommandBuilder
回复
Mr.Osc 2004-05-07
to lvenlee(大头.NET):
你能不能说得再具体一点er?
是指DataSet中的索引还是什么,可能出现超标的索引在什么地方?

解决了即可给分。
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-05-07 12:02
社区公告

让您成为最强悍的C#开发者