如何将DataSet中的,每一条记录都更新到数据库去? DataAdapter.Update()可以啊。不过你更新的那个表一定要有主键,不然就不能更新了!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private System.Data.DataSet ccDS;private System.Data.OleDb.OleDbDataAdapter ccDA,ccDA2;/*更新*/this.ccDA.Update(this.ccDS,"cc_students");/*更新*/然后加个按牛控件写this.ccDS.Clear();this.ccDA.Fill(this.ccDS,"terminal");//terminal为表名 ... 不是用数据库的数据来更新DataSet的数据,而是要用DataSet的数据去还原数据库的数据。像这样DataSet ds;DataAdapter da;da.fill(ds);...//这里ds的内容没有被修改过。da.Update(ds); //??这里应该怎么写?才能把ds中的每条记录都更新到数据库?因为ds中的记录没有被修改过,所以默认情况下da.Update(ds)就什么也不做。 private SqlConnection Cnn;private SqlDataAdapter Adap;private DataSet NewDat=new DataSet();Cnn=new SqlConnection("database=123;server=BTK;Trusted_Connection=yes");Cnn.Open();Adap=new SqlDataAdapter("SELECT * FROM Categories",Cnn);SqlCommandBuilder SqlCB=new SqlCommandBuilder(Adap);Adap.Fill(NewDat,"Categories");NewDat.Tables["Categories"].Rows[0][1]="as";NewDat.Tables["Categories"].Rows[1][1]="asdqwu";NewDat.Tables["Categories"].Rows[2][1]="btk";Adap.Update(NewDat,"Categories")以上代码测试过,不过记住,Categories表中一定要有主键 你的代码里对NewDat进行了修改啊NewDat.Tables["Categories"].Rows[0][1]="as";NewDat.Tables["Categories"].Rows[1][1]="asdqwu";NewDat.Tables["Categories"].Rows[2][1]="btk";这三句之后Update,当然会把改动过的行更新到数据库我要的是,对NewDat什么修改的动作也不做,再把原来的数据导回到数据库中去。这个时候数据库里的数据可能已经发生了变化,再导回去之后,又变回了原来的值,就像做备份那样。 我今天也遇到这问题,当一条数据也没有变时,adapter不会自动生成UpdateCommand, 所以出错正在想办法中....办法之一:自已改行状态之二:自已来写UpdateCommand 想办法把每行的row state变更为add这样da会自动为你update,也就是insert到数据库。但是你能保证和数据库现有数据不冲突吗? DataSet m_dsBds ; /// <summary> /// 更新数据库。 /// </summary> private void UpdateDB() { if ( !m_dsBds.HasChanges() ) { //增加错误提示! //modified by dengff 2004-4-26 Msg.MyMessageBox(Msg.error); return; } try { this.Cursor = Cursors.WaitCursor; if (m_conn.State != ConnectionState.Open) { m_conn.Open(); } using (SqlTransaction trans = m_conn.BeginTransaction()) { try { m_daBds.SelectCommand.Transaction = trans; m_cbBds.RefreshSchema(); DataSet dsChange = m_dsBds.GetChanges(); if (dsChange == null) { trans.Rollback(); this.Cursor = Cursors.Default; return; } m_daBds.Update(dsChange, "bdxjt_xt_bds"); m_dsBds.AcceptChanges(); trans.Commit(); this.Cursor = Cursors.Default; } catch (Exception ex) { trans.Rollback(); throw ex; } } } catch (Exception ex) { this.Cursor = Cursors.Default; throw ex; } } NewDat.Tables["Categories"].Rows[0][1]=NewDat.Tables["Categories"].Rows[0][1];NewDat.Tables["Categories"].Rows[1][1]=NewDat.Tables["Categories"].Rows[1][1];NewDat.Tables["Categories"].Rows[2][1]=NewDat.Tables["Categories"].Rows[2][1];实际使用时,用循环做 winform 如何把父窗体的bool变量值传到子窗体 怎么检查是不是浮点型,整型,高手来看看啊 两张图片对比 关于数码管显示时钟的程序 一个关于linkbutton空件控制的问题!!!高手请进!!!在线等 递归数据库连接的问题————等待!! ADO.NET Entity 作为数据源绑定到GridView上的时候如何显示外键关系呢? 正则表达式的问题 abstract 和 ovrride不能同时用吗 在哪里可以下到成套的图标(ico),要好看的哦 图片格式转换方面的问题!希望大家不吝赐教 如何获取鼠标所在的位置?及如何计算拖动的距离?
private System.Data.OleDb.OleDbDataAdapter ccDA,ccDA2;
/*更新*/
this.ccDA.Update(this.ccDS,"cc_students");
/*更新*/
然后加个按牛控件
写
this.ccDS.Clear();
this.ccDA.Fill(this.ccDS,"terminal");//terminal为表名
DataAdapter da;da.fill(ds);
...
//这里ds的内容没有被修改过。
da.Update(ds); //??这里应该怎么写?才能把ds中的每条记录都更新到数据库?因为ds中的记录没有被修改过,所以默认情况下da.Update(ds)就什么也不做。
private SqlDataAdapter Adap;
private DataSet NewDat=new DataSet();Cnn=new SqlConnection("database=123;server=BTK;Trusted_Connection=yes");
Cnn.Open();
Adap=new SqlDataAdapter("SELECT * FROM Categories",Cnn);
SqlCommandBuilder SqlCB=new SqlCommandBuilder(Adap);
Adap.Fill(NewDat,"Categories");
NewDat.Tables["Categories"].Rows[0][1]="as";
NewDat.Tables["Categories"].Rows[1][1]="asdqwu";
NewDat.Tables["Categories"].Rows[2][1]="btk";
Adap.Update(NewDat,"Categories")以上代码测试过,不过记住,Categories表中一定要有主键
NewDat.Tables["Categories"].Rows[0][1]="as";
NewDat.Tables["Categories"].Rows[1][1]="asdqwu";
NewDat.Tables["Categories"].Rows[2][1]="btk";这三句之后Update,当然会把改动过的行更新到数据库
我要的是,对NewDat什么修改的动作也不做,再把原来的数据导回到数据库中去。这个时候数据库里的数据可能已经发生了变化,再导回去之后,又变回了原来的值,就像做备份那样。
adapter不会自动生成UpdateCommand, 所以出错
正在想办法中....
办法之一:
自已改行状态
之二:
自已来写UpdateCommand
这样da会自动为你update,也就是insert到数据库。但是你能保证和数据库现有数据不冲突吗?
/// <summary>
/// 更新数据库。
/// </summary>
private void UpdateDB()
{
if ( !m_dsBds.HasChanges() )
{
//增加错误提示!
//modified by dengff 2004-4-26
Msg.MyMessageBox(Msg.error);
return;
} try
{
this.Cursor = Cursors.WaitCursor; if (m_conn.State != ConnectionState.Open)
{
m_conn.Open();
} using (SqlTransaction trans = m_conn.BeginTransaction())
{
try
{
m_daBds.SelectCommand.Transaction = trans;
m_cbBds.RefreshSchema(); DataSet dsChange = m_dsBds.GetChanges();
if (dsChange == null)
{
trans.Rollback();
this.Cursor = Cursors.Default;
return;
} m_daBds.Update(dsChange, "bdxjt_xt_bds"); m_dsBds.AcceptChanges();
trans.Commit();
this.Cursor = Cursors.Default;
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
}
catch (Exception ex)
{
this.Cursor = Cursors.Default;
throw ex;
}
}
NewDat.Tables["Categories"].Rows[1][1]=NewDat.Tables["Categories"].Rows[1][1];
NewDat.Tables["Categories"].Rows[2][1]=NewDat.Tables["Categories"].Rows[2][1];实际使用时,用循环做