即使有很多不同的主题,我也无法真正找到适合我的情况的答案。
我正在使用Xamarin Android和更新SQL Server数据库的Web服务。当我一次调用Web方法时,它可以正常工作。但是,当数据更新并再次发送时,出现此错误:
并发冲突:UpdateCommand影响了预期的1条记录中的0条 我尝试找到任何可以接受数据集更改的内容,还尝试了.getChanges并尝试清除并重新填充数据集,但是我一直收到该错误
这是我用于调用网络方法的代码
async void startUploadCounter()
{
SQLWebService.SQLWebService DataService2 = new SQLWebService.SQLWebService();
await Task.Delay(10000);
Toast.MakeText(this, "Updating", ToastLength.Short).Show();
DataService2.updateRooms(rooms,employeeID);
isEdited = false;
}
这是网络方法的代码
[WebMethod]
public void updateRooms(DataSet rooms, int employeeID)
{
using (SqlConnection connection = new SqlConnection(cs))
{
connection.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter($"Select * from Room Where AssignedEMP = {employeeID}", connection);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(rooms);
// rooms.Clear();
// rooms.GetChanges();
}
}
如果我的工作方式很奇怪,那么我不太会使用Web服务。
编辑:我可以确认数据已正确发送到Web服务,但是,SQL数据适配器由于某种原因无法更改数据
编辑2:我已经检查了Web服务,即使它出错了,它仍然具有正确的数据,但只是不想工作。
答案 0 :(得分:0)
所以回到问题之后。我做了两件事。但是,我相信这是可行的
选项1
如果您将命令构建器设置为覆盖更改,则它允许我的工作
SqlCommandBuilder.ConflictOption = ConflictOption.OverwriteChanges
选项2
但是,我也通过这样做处理了命令生成器和数据适配器
dataAdapter.Dispose();
commandBuilder.Dispose();
rooms.AcceptChanges();