能否用SqlDataAdapter.Update() 添加数据

sharpsxl 2007-08-22 11:08:24
正常的方法一是这样:
string str="Insert into...";
cmd.CommandText = str;
cmd.ExecuteNonQuery();

-----------------
现在我希望用第二种方法:在DataSet增加一行,然后用SqlDataAdapter.Update()完成插入操作.比如:
DataRow row = ds.Tables[0].NewRow();;
row[1] = "";
row[2]="";
ds.Tables[0].Rows.Add(row);
SqlDataAdapter.Update(ds);
....

第二种方法提示错误:"当传递具有新行的 DataRow 集合时,更新要求有效的InsertCommand。"
请问怎么做?
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharpsxl 2007-08-22
  • 打赏
  • 举报
回复
解决了,谢谢三位!
jiatong1981 2007-08-22
  • 打赏
  • 举报
回复
使用Adapter也需要指定其用于数据库操作的相关Commander对象 当然如果你的数据表如果有主键,则可以使用CommanderBuilder来生成Adapter的相关命令 例如:
string sqlstr = "select * from table1";//table1必须有主键且主键信息包含在返回的结果集中
da = new OleDbDataAdapter(sqlstr, conn);
ds = new DataSet();
da.Fill(ds);
OleDbCommandBuilder dcmdb = new OleDbCommandBuilder(da);
……
da.Update(ds);
ds.AcceptChanges();
Onlyzhugf 2007-08-22
  • 打赏
  • 举报
回复
/// <summary>
/// 追加信息
/// </summary>
private void AddInfor()
{
try
{
SqlDataAdapter thisAdapter = new SqlDataAdapter("select * from TB_Users", thisConnection);
SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);
DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "TB_Users");
DataRow thisRow = thisDataSet.Tables["TB_Users"].NewRow();
thisRow["UserName"] = txtName.Text;
thisRow["UserPws"] = txtPws.Text;
thisRow["Status"] = txtState.Text;
thisRow["Remark"] = txtRemark.Text;
thisRow["timestamp"] = Convert.ToDateTime(System.DateTime.Now);
thisDataSet.Tables["TB_Users"].Rows.Add(thisRow);
thisAdapter.Update(thisDataSet, "TB_Users");
thisConnection.Close();

}
catch (Exception err)
{
MessageBox.Show("追加失败");
}
}
ccp5780199 2007-08-22
  • 打赏
  • 举报
回复
SqlCommandBuilder scb=new SqlCommandBuilder(da);

110,536

社区成员

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

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

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