当前位置:编程学习 > C#/ASP.NET >>

"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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,