ADO.NET方法如何向数据库添加记录,请指教

napelun 2008-03-21 03:26:19
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”。
...全文
226 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chensc2030 2010-04-01
  • 打赏
  • 举报
回复
谢谢,很有参考价值!
wuhongyao3 2008-03-21
  • 打赏
  • 举报
回复
呵呵
回复楼主 增加了一级。。哈哈
wuhongyao3 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 napelun 的回复:]
3楼的 依照你的指教,已经解决了 :)
在请教一下,
“然后还有声明个
sqlcommandbuilder s=new sqlcommandbuilder(myDataAdapter )



这句话是什么意思,有什么用呢??

拜谢!
[/Quote]
sqlcommandbuilder 这个的意思 就是你不用再 生成
Myadpter.insercommand
Myadpter.updatecommand
他会自动生成这些
具体 请看。。
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlcommandbuilderclasstopic.asp

或者 百度 利用sqladapter更新数据库。。。
很多的。
virusswb 2008-03-21
  • 打赏
  • 举报
回复
sqldataadapter不会自动生成实现dataset的更改与关联的sql server实例之间的协调所需的transact-sql语句,但是如果设置了sqldataadapter的selectcommand属性,则可以创建一个sqlcommandbuilder对象来自动生成用于表单更新的transact-sql语句;否则的话要自己添加一个才可以更新成功
lvfeng180 2008-03-21
  • 打赏
  • 举报
回复
接分了
napelun 2008-03-21
  • 打赏
  • 举报
回复
3楼的 依照你的指教,已经解决了 :)
在请教一下,
“然后还有声明个
sqlcommandbuilder s=new sqlcommandbuilder(myDataAdapter )



这句话是什么意思,有什么用呢??

拜谢!
napelun 2008-03-21
  • 打赏
  • 举报
回复
我按照 2楼的方法试了,提示:

其他信息: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。

莫非我的SQL命令除了问题??
joco0713 2008-03-21
  • 打赏
  • 举报
回复
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”
wuhongyao3 2008-03-21
  • 打赏
  • 举报
回复

楼主
datarow dr=myDataSet.table["..."].newrow

dr["RepairID"] = "yanyang";

dr["PartID"] = "1235";

dr["PositionNo"] = "18888";

myDataRow["Quantity"] = "5555";
myDataSet.table("...").row.add(dr);
然后还有声明个
sqlcommandbuilder s=new sqlcommandbuilder(myDataAdapter )
myDataAdapter.Update(myDataSet)
这样应该就行了吧。
patrickpan 2008-03-21
  • 打赏
  • 举报
回复
添加成功了才怪呢,你的myDataSet根本没有改变,你把数据添加到无关的DataTable中。

这样试试:
DataRow dr = myDataSet.Table[0].NewRow();
dr["RepairID"] = "yanyang";
.......................
myDataSet.Table[0].Rows.Add(dr);
myDataAdapter.Update(myDataSet);
shxmh 2008-03-21
  • 打赏
  • 举报
回复
myDataAdapter的UpdateCommand设为:
UPDATE tblARepairPart set RepairID="yanyang",PartID="1235"...;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧