private void storetodata()
{
sqlconn.Open();
SqlCeCommand comm = new SqlCeCommand();
comm.CommandText = "Update "+SyncDataBackUp+" Set dataValue = @dataValue, dataSerialId = @newDataSerialId Where dataType = @dataType and tableId = @tableId and dataSerialId = @dataSerialId";
comm.Connection = sqlconn; SqlCeParameter para = comm.Parameters.Add("@dataValue", SqlDbType.NVarChar, 50);
para.SourceColumn = "dataValue";
para.SourceVersion = DataRowVersion.Current;
para = comm.Parameters.Add("@dataType", SqlDbType.NVarChar, 50);
para.SourceColumn = "dataType";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@tableId", SqlDbType.NVarChar, 50);
para.SourceColumn = "tableId";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@dataSerialId", SqlDbType.Int);
para.SourceColumn = "dataSerialId";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@newDataSerialId", SqlDbType.Int);
para.SourceColumn = "dataSerialId";
para.SourceVersion = DataRowVersion.Current; da.UpdateCommand = comm; comm = sqlconn.CreateCommand();
comm.CommandText = "INSERT INTO "+SyncDataBackUp+" ([Id],[tableId],[dataType],[dataValue],[dataSerialId],[isSent]) VALUES (newid(),@tableId,@dataType,@dataValue,@dataSerialId,@isSent)";
para = comm.Parameters.Add("@tableId", SqlDbType.NVarChar, 50);
para.SourceColumn = "tableId";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@dataType", SqlDbType.NVarChar, 50);
para.SourceColumn = "dataType";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@dataValue", SqlDbType.NVarChar, 50);
para.SourceColumn = "dataValue";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@dataSerialId", SqlDbType.Int);
para.SourceColumn = "dataSerialId";
para.SourceVersion = DataRowVersion.Original;
para = comm.Parameters.Add("@isSent", SqlDbType.NVarChar, 5);
para.SourceColumn = "isSent";
para.SourceVersion = DataRowVersion.Original; da.InsertCommand = comm; comm = sqlconn.CreateCommand();
comm.CommandText = "DELETE from "+SyncDataBackUp+" WHERE Id = @Id";
para = comm.Parameters.Add("@Id", SqlDbType.UniqueIdentifier);
para.SourceColumn = "Id";
para.SourceVersion = DataRowVersion.Original; da.DeleteCommand = comm;
da.Update(ds.Tables[SyncData]);
ds.Tables[SyncData].AcceptChanges();
sqlconn.Close();
}我的操作是:先在ds.Tables[SyncData]里面新增几条数据,然后把新增的再删除了,再修改几条从数据库中读出的数据。然后调用上面的函数更新数据库就会出现如题的错误。有时候显示DeleteCommand,有时候显示UpdateCommand错误。请问是怎么一回事。
1\你要更新/删除的数据已经不在了[已经被别人删除掉了,两个或以上人员操作时会出现];
2\更新的时候 有可能:当你条件恒为FALSE的时候,也会报这个错误;