"Update 无法找到 TableMapping['Table'] 或 DataTable“Table”。"
我检查了一下dataset,也就是changedDs,2个表都与数据库一致,数据都正确更新了,但update就报错代码如下:
public void CalculateSqlOper(OperType operType)
{
//SortToSql(operType);
DataOper oper = new DataOper();
DataSet thisds = new DataSet();
thisds = oper.ChangedDs(changedArr, operType);
oper.UpdateDs(thisds);
}
public DataSet ChangedDs( int[] arr, OperType operType )
{
SqlConn();
changedDs = new DataSet();
string sql1 = "select * from t_lot order by qishuTotal DESC";
da = new OleDbDataAdapter(sql1, SqlConn());
da.Fill(changedDs, "t_lot");
string sql2 = "select * from t_lotmin order by qishuTotal DESC";
da = new OleDbDataAdapter(sql2, SqlConn());
da.Fill(changedDs, "t_lotmin");
DataTable dt1 = changedDs.Tables["t_lot"];
dt1.PrimaryKey = new DataColumn[] { dt1.Columns["ID"] }; //获取当前数据表充当主键的列的值的集合
if ((int) operType == 1 && dt1.Rows.Find(arr[0]) != null)
{
row = dt1.Rows.Find(arr[0]); //获取由主键数值指定的行
}
else
{
row = dt1.NewRow();
}
for (int i = 0 ; i <= dt1.Columns.Count - 1 ; i++ )
{
row[i] = arr[i];
}
if ((int) operType == 2)
{
dt1.Rows.Add(row);
}
DataTable dt2 = changedDs.Tables["t_lotmin"];
dt2.PrimaryKey = new DataColumn[] { dt2.Columns["ID"] }; //获取当前数据表充当主键的列的值的集合
if ((int) operType == 1 && dt2.Rows.Find(arr[100]) != null)
{
row = dt2.Rows.Find(arr[100]); //获取由主键数值指定的行
}
else
{
row = dt2.NewRow();
}
for (int i = 0 ; i <= dt2.Columns.Count - 1 ; i++)
{
row[i] = arr[i];
}
if ((int) operType == 2)
{
dt2.Rows.Add(row);
}
return changedDs;
}
/// <summary>
/// 修改后的dataset更新至数据库
/// /// </summary>
/// <param name="changedDs">修改后的dataset</param>
/// <param name="tableName">要更新的表名</param>
/// <returns></returns>
public void UpdateDs( DataSet changedDs )
{
try
{
da = new OleDbDataAdapter();
oleCB = new OleDbCommandBuilder(da);
da.Update(changedDs);
changedDs.AcceptChanges();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "数据库更新失败");
}
}
补充:.NET技术 , C#