Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新数据集失败?_C#_Database_Dataset - Fatal编程技术网

C# 更新数据集失败?

C# 更新数据集失败?,c#,database,dataset,C#,Database,Dataset,根据本文:,在数据集中插入/更改数据后,我需要调用更新以将数据库数据与数据集数据同步 我的问题是: 我创建了一个名为dataset1.xsd的数据集,然后创建了一个新的TableAdapter来执行插入查询,然后我需要以某种方式让数据库知道数据集中的内容已经更改 DataSet1TableAdapters.reservationsTableAdapter ta = new DataSet1TableAdapters.reservationsTableAdapter(); ta.Insert(L

根据本文:,在数据集中插入/更改数据后,我需要调用更新以将数据库数据与数据集数据同步

我的问题是:

我创建了一个名为dataset1.xsd的数据集,然后创建了一个新的TableAdapter来执行插入查询,然后我需要以某种方式让数据库知道数据集中的内容已经更改

DataSet1TableAdapters.reservationsTableAdapter ta = new DataSet1TableAdapters.reservationsTableAdapter();

ta.Insert(LastName,Arrival,Departure);  // this is where I do the INSERT query
现在我应该更新数据集,对吗?我该怎么做?我在上面发表的文章建议这样做:

ta.Update(DataSet1.reservationsDataTAble);
但是,我不能这样做,因为:

错误-“myproject.DataSet1.ReservationsDataable”是一个“类型”,在给定上下文中无效

我尝试声明一个新的DataSet1DataTable,然后更新它,但它仍然不会显示数据库中的任何更改

但是,我知道更改保存在数据集中,因为当我稍后填充新的数据表时,记录就在那里

编辑:多亏了下面的评论,我试着改变一下:

DataSet1.reservationsDataTable NDT = new DataSet1.reservationsDataTable();                   

DataSet1TableAdapters.reservationsTableAdapter ta = new DataSet1TableAdapters.reservationsTableAdapter();

ta.Insert(LastName,Arrival,Departure);

ta.Fill(NDT);   
ta.Update(NDT);
。。。我可以看到(在调试器中)NDT数据表实际上包含了“插入”然后填充到数据表中的数据


但是,
ta.Update(NDT)仍然没有更新我的数据库…

我假设
但是,ta.更新(NDT);仍然没有更新我的数据库
,这意味着没有执行sql插入,也没有异常

这对你有用吗

var myDataSet1 = new DataSet1();

var newReservation = myDataSet1.reservations.NewRow();

newReservation.LastName=...
newReservation.Arrival=...
newReservation.Departure=...

myDataSet1.reservations.AddreservationsRow(newReservation);

var ta = new DataSet1TableAdapters.reservationsTableAdapter();

ta.Update(myDataSet1.reservations);

通常方法是适配器将数据加载到
数据表
数据集
。然后,该对象被赋予适配器的
Update
方法。此时,
DataSet1.ReservationsDataable
表示保存数据的类型。而是使用类型的实例。什么是DataSet1?它是属性还是类型?您需要对已创建的数据集实例进行操作,但代码中不清楚您是否创建了一个。感谢您的建议-我在原始问题中添加了一个“编辑”,这就是发生的情况…您填写NDT,然后立即保存它。目前没有更改的记录,无需保存。请参见此处:如何将记录插入表。你创建一个新行,插入它,然后保存一个表。但是,如果我的“ID”是自动为我创建的,我怎么能创建一个新行呢?我必须手动为该行插入一个ID字段,然后…newReservation.LastName=。。。(这个新创建的行中没有变量LastName)或任何其他变量,只有一些默认的onesbesides,如果我只创建一行,我还必须创建一个ID,并且我的ID在数据库中自动生成,因此,必须有一种更优雅的方法……从dbadapter生成的insert sql不会对数据集主键进行加密。你试过了吗?