SqlConnection myConnection = new SqlConnection (strConn);
  
myConnection.Open();

SqlDataAdapter myDataAdapter = new SqlDataAdapter ();
  
DataSet myDataSet = new DataSet ();   string strCom = "SELECT * FROM tblARepairPart"; myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection);
  
   myDataAdapter.Fill (myDataSet,"tblARepairPart"); MessageBox.Show("fill");  
DataRow myDataRow; //定义一个DataRow
 
DataTable myDataTable; //定义一个DataTable
 
myDataTable = myDataSet.Tables["tblARepairPart"]; //引用DataSet中的一个DataTable myDataRow = myDataTable.NewRow(); //调用NewRow方法得到一个DataRow myDataRow["RepairID"] = "yanyang"; 

myDataRow["PartID"] = "1235";  myDataRow["PositionNo"] = "18888";             myDataRow["Quantity"] = "5555"; myDataTable.Rows.Add(myDataRow); //将此DataRow添加到myDataTable中
myDataAdapter.Update(myDataSet);
---------------------------
以上代码,添加不成功。
错误提示为:
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: Update 无法找到 TableMapping['Table'] 或 DataTable“Table”。

解决方案 »

  1.   

    myDataAdapter的UpdateCommand设为:
    UPDATE tblARepairPart set RepairID="yanyang",PartID="1235"...;
      

  2.   

    添加成功了才怪呢,你的myDataSet根本没有改变,你把数据添加到无关的DataTable中。这样试试:
    DataRow dr = myDataSet.Table[0].NewRow();
    dr["RepairID"] = "yanyang";  
    .......................
    myDataSet.Table[0].Rows.Add(dr);
    myDataAdapter.Update(myDataSet); 
      

  3.   


    楼主
    datarow dr=myDataSet.table["..."].newrowdr["RepairID"] = "yanyang";  dr["PartID"] = "1235";  dr["PositionNo"] = "18888";  myDataRow["Quantity"] = "5555"; 
    myDataSet.table("...").row.add(dr); 
    然后还有声明个
    sqlcommandbuilder s=new sqlcommandbuilder(myDataAdapter )
    myDataAdapter.Update(myDataSet)
    这样应该就行了吧。
      

  4.   

    DataSet myDataSet = new DataSet ();   string strCom = "SELECT * FROM tblARepairPart"; myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection); 
       
       myDataAdapter.Fill (myDataSet,"tblARepairPart"); 不能这么写的,你的DataSet没有把“tblARepairPart”这个表先加进去就,就执行这句myDataAdapter.Fill (myDataSet,"tblARepairPart"); 不行的,这样你的DataSet 里就会有两张表“Table” 和“tblARepairPart”
      

  5.   

    我按照 2楼的方法试了,提示:其他信息: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。莫非我的SQL命令除了问题??
      

  6.   

    3楼的 依照你的指教,已经解决了 :)
    在请教一下,
    “然后还有声明个 
    sqlcommandbuilder s=new sqlcommandbuilder(myDataAdapter )”这句话是什么意思,有什么用呢??拜谢!
      

  7.   

    sqldataadapter不会自动生成实现dataset的更改与关联的sql server实例之间的协调所需的transact-sql语句,但是如果设置了sqldataadapter的selectcommand属性,则可以创建一个sqlcommandbuilder对象来自动生成用于表单更新的transact-sql语句;否则的话要自己添加一个才可以更新成功
      

  8.   

    sqlcommandbuilder 这个的意思 就是你不用再 生成
    Myadpter.insercommand
    Myadpter.updatecommand
    他会自动生成这些
    具体 请看。。
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlcommandbuilderclasstopic.asp或者 百度   利用sqladapter更新数据库
    很多的。