Visual Studio 使用C#和DataSet更新远程数据库

q1qsirdb  于 2023-03-03  发布在  C#
关注(0)|答案(1)|浏览(172)

我有一个远程Oracle数据库和我感兴趣的某个表。对于我的C#程序,我使用VS DataSet设计器创建了一个DataSet,并为该表添加了一个TableAdapter
现在我需要向数据库表中添加一个新行。起初,我尝试在数据集适配器中添加insert a row查询,如下所示:

然后,为了访问它,我使用了这个代码:

DataSetTableAdapters.INVENTURTableAdapter inventur_adapter = new INVENTURTableAdapter();

inventur_adapter.InsertQuery( arg1, arg2, arg3, ...);

它没有抛出任何错误,但也没有更新远程数据库。
在此之后,我尝试了一个方法列出here

DataSet ds = new DataSet();
 DataSet.INVENTURRow newInventurRow = ds.INVENTUR.NewINVENTURRow();

 newInventurRow.SOMEARG = value;
 ...
 ds.NIESSING.Rows.Add(newInventurRow);

它也没有抛出任何错误,也没有更新远程数据库。
我猜在这两个示例中,这是因为我需要创建该数据集的新示例,但我不明白如何将新创建的数据集示例与远程表“合并
Here他们使用此行保存更改:

this.regionTableAdapter.Update(this.northwindDataSet.Region);

因此,对于我示例,它应该是:

DataSetTableAdapters.INVENTURTableAdapter.Update(DataSet.INVENTUR);

问题是我不能使用“Dataset.INVENTUR”,只能使用INVENTURDataTable,它不起作用
或者我可以这样做:

DataSetTableAdapters.INVENTURTableAdapter.Update(ds.INVENTUR);

这将引发错误:
非静态需要对象引用
如何实际保存更新的数据?

3pmvbmvn

3pmvbmvn1#

下面是我解决这个问题的方法:

DataSet dataSet = new DataSet();
 DataSetTableAdapters.INVENTURTableAdapter adapter = new DataSetTableAdapters.INVENTURTableAdapter();
 DataSet.INVENTURGRow newInventurRow = dataSet.INVENTUR.NewINVENTURGRow();
            
            newInventurRow.<COLUMNNAME1> = <VALUE1>
            ...
            newInventurRow.<COLUMNNAME99> = <VALUE99>

adapter.Update(dataSet.INVENTUR);

也许不是最佳的方法来做到这一点,但这是唯一的方法,我设法解决它,它的工作。

相关问题