C# 使用数据集和表适配器的更新未在SQLCe 3.5上生效

C# 使用数据集和表适配器的更新未在SQLCe 3.5上生效,c#,dataset,sql-server-ce,C#,Dataset,Sql Server Ce,我们使用VS2010数据连接设计向导来定义到只有一个表(database=“UserMetrics”table=“User”)的SQLCe数据库的连接。尽管我们可能会尝试,但更新似乎不起作用,我已经浏览了SO和MSDN上的帖子,但看不到明显的错误… //initialize UserMetricsDataSet umDataSet = new UserMetricsDataSet( ); UserMetricsDataSetTableAdapte

我们使用VS2010数据连接设计向导来定义到只有一个表(database=“UserMetrics”table=“User”)的SQLCe数据库的连接。尽管我们可能会尝试,但更新似乎不起作用,我已经浏览了SO和MSDN上的帖子,但看不到明显的错误…

        //initialize 
        UserMetricsDataSet umDataSet = new UserMetricsDataSet( );
        UserMetricsDataSetTableAdapters.UserTableAdapter umTableAdapter = new    UserMetricsDataSetTableAdapters.UserTableAdapter( );

        // check that test data is there and count is correct
        umTableAdapter.Fill( umDataSet.User );
        UserMetricsDataSet.UserRow umRow = (UserMetricsDataSet.UserRow)umds.User.Rows[0]; 
        int count = umDataSet.User.Rows.Count; //yep its there

        //lets add some rows
        for (int i = 0; i < 100; i++)
            umDataSet.User.AddUserRow( "smith", (float)54, (float)3, 1);

        umds.User.AcceptChanges( );
        //umTableAdapter.Update(umDataSet.User); //tried this also ... no change...

        // there are now 101 rows !!
        int count = umDataSet.User.Rows.Count; //yep its there
        umRow = (UserMetricsDataSet.UserRow)umds.User.Rows[101];

        //lets double check
        umTableAdapter.Fill( umDataSet.User );
        int count = umds.UserMetris.Rows.Count; //huh!!! count==1 ???
//初始化
UserMetricsDataSet umDataSet=新的UserMetricsDataSet();
UserMetricsDataSetTableAdapters.UserTableAdapter umTableAdapter=新的UserMetricsDataSetTableAdapters.UserTableAdapter();
//检查测试数据是否存在,计数是否正确
umTableAdapter.Fill(umDataSet.User);
UserMetricsDataSet.UserRow umRow=(UserMetricsDataSet.UserRow)umds.User.Rows[0];
int count=umDataSet.User.Rows.count//是的,就在那里
//让我们添加一些行
对于(int i=0;i<100;i++)
umDataSet.User.AddUserRow(“smith”,(float)54,(float)3,1);
umds.User.AcceptChanges();
//umTableAdapter.Update(umDataSet.User)//我也试过这个。。。没有变化。。。
//现在有101排!!
int count=umDataSet.User.Rows.count//是的,就在那里
umRow=(UserMetricsDataSet.UserRow)umds.User.Rows[101];
//让我们再检查一下
umTableAdapter.Fill(umDataSet.User);
int count=umds.UserMetris.Rows.count//呵呵!!!计数==1???

我假设
umDataSet
umds
是一样的

那怎么办

UserMetricsDataSet.UserRow umRow = umDataSet.User.NewRow();
umRow["Name"] = "smith";
// etc
umDataSet.User.ImportRow(umRow);
umDataSet.User.AcceptChanges();
或者颠倒顺序呢?
TableAdapter.Update()
方法根据DataTable中的更改将更新发送回数据库。如果首先接受更改,则会在每个DataTable行上重置
RowState
,因此找不到要发送回数据库的更新

发件人:

为了将修改后的数据发送到数据库,需要调用TableAdapter的更新方法。适配器的更新方法将更新单个数据表,并根据表中每个数据行的行状态执行正确的命令(INSERT、Update或DELETE)


我假设
umDataSet
umds
是一样的

那怎么办

UserMetricsDataSet.UserRow umRow = umDataSet.User.NewRow();
umRow["Name"] = "smith";
// etc
umDataSet.User.ImportRow(umRow);
umDataSet.User.AcceptChanges();
或者颠倒顺序呢?
TableAdapter.Update()
方法根据DataTable中的更改将更新发送回数据库。如果首先接受更改,则会在每个DataTable行上重置
RowState
,因此找不到要发送回数据库的更新

发件人:

为了将修改后的数据发送到数据库,需要调用TableAdapter的更新方法。适配器的更新方法将更新单个数据表,并根据表中每个数据行的行状态执行正确的命令(INSERT、Update或DELETE)


谢谢你对拼写的理解。不过你的“ImportRow”建议没有效果。@Gio-新的例子怎么样?对不起,老板进来了,需要更新。谢谢-就是这样!谢谢你对拼写的理解。不过你的“ImportRow”建议没有效果。@Gio-新的例子怎么样?对不起,老板进来了,需要更新。谢谢-就是这样!