如何把datagridview修改的数据保存到数据库中 界面就一个datagridview和button,当点击button的时候,如何把datagridview中的新数据追加进数据库的表中. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DataGridView中做的数据改变会反映到它所绑定的DataTable里,最后使用SqlDataAdapter的Update方法,把修改反映到数据库中 if (ds.HasChanges() == true) { for (Int32 i = 0; i < dgvAttribute.Rows.Count - 1; i++) { if (dgvAttribute.Rows[i].Cells[1].Value.ToString().Trim() == "") { MessageBox.Show("不能存在空值"); return; } } bool b = db.BON_All1(ds); if (b == true) { ds.Clear(); this.GetAttribute(); } } public bool BON_All(DataSet ds) { Model.Attribute rr = new Model.Attribute(); ArrayList list = new ArrayList(); list.Add(sql); list.Add(ame); list.Add(del); list.Add(add); OleDbParameter[] getparm = OledbHelper.GetCacheParameters(sql); OleDbParameter[] addparm = OledbHelper.GetCacheParameters(add); if (addparm == null) { addparm = new OleDbParameter[] { new OleDbParameter(Parm_name,OleDbType.VarChar,50,"attributeValue") }; OledbHelper.CacheParameters(add, addparm); } addparm[0].Value = rr.AttributeValue; OleDbParameter[] delParm = OledbHelper.GetCacheParameters(del); if (delParm == null) { delParm = new OleDbParameter[] { new OleDbParameter(Parm_cid, OleDbType.Integer, 4, "autoID") }; OledbHelper.CacheParameters(del, delParm); } delParm[0].Value = rr.AutoID; OleDbParameter[] ameParm = OledbHelper.GetCacheParameters(ame); if (ameParm == null) { ameParm = new OleDbParameter[] { new OleDbParameter(Parm_name, OleDbType.VarChar, 50, "attributeValue") , new OleDbParameter(Parm_cid,OleDbType.Integer,4,"autoID")}; OledbHelper.CacheParameters(ame, ameParm); } ameParm[0].Value = rr.AttributeValue; ameParm[1].Value = rr.AutoID; ArrayList ll = new ArrayList(); ll.Add(getparm); ll.Add(ameParm); ll.Add(delParm); ll.Add(addparm); Int32 val = 0; try { val = OledbHelper.ExecuteNonQuery(OledbHelper.con, CommandType.Text, list, ds, ll); } catch (Exception ex) { throw new Exception(ex.Message); } if (val > 0) return true; return false; } 呵呵,这方法多了看这个:public static Int32 ExecuteNonQuery(OleDbConnection con, CommandType cmdType, string cmdText, DataSet ds, params OleDbParameter[] cmdParms) { OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter da = new OleDbDataAdapter(); OleDbParameter parm = new OleDbParameter(); OleDbCommandBuilder builder = null; Int32 val; PrepareCommand(cmd, con, null, cmdType, cmdText, ds, cmdParms); da.SelectCommand = cmd; builder = new OleDbCommandBuilder(da); val = da.Update(ds); return val; } /// <summary> ///批处理 /// </summary> /// <param name="ds"></param> /// <returns></returns> public bool BON_All1(DataSet ds) { Int32 val = 0; try { val = OledbHelper.ExecuteNonQuery(OledbHelper.con, CommandType.Text, sql, ds); } catch (Exception ex) { throw new Exception(ex.Message); } if (val > 0) return true; return false; } 把dataGridView1更改的数据绑定到datatable中:for (int i = 0; i < dataGridView1.Rows.Count-1; i++){ dt.Rows[i].ItemArray[0] = dataGridView1.Rows[i].Cells[0].Value;}在用SqlDataAdapter.Update(dt);更新到数据库中 问个关于数据转换的问题....大家来帮帮忙 GDI+ 中发生一般性错误?????? struct数据传递问题,请帮帮忙,谢谢 各位高手请给小弟提供几个c#+access 的开源例子 在nHibernate里,大家是怎样处理联合主键的? 有个奇怪的现象,求助! 在.net cf中如何添加带有图标的菜单项 请问兄弟姐妹!谢谢了! 用c#如何实现运行时按f2键更改label的值?就像windows下按f2键可以重命名一样的功能? 动态加载装配件的问题? 求c++转学c#的教材 二色TIF分割的问题。
{
for (Int32 i = 0; i < dgvAttribute.Rows.Count - 1; i++)
{
if (dgvAttribute.Rows[i].Cells[1].Value.ToString().Trim() == "")
{
MessageBox.Show("不能存在空值");
return;
}
}
bool b = db.BON_All1(ds);
if (b == true)
{
ds.Clear();
this.GetAttribute();
}
}
{
Model.Attribute rr = new Model.Attribute();
ArrayList list = new ArrayList();
list.Add(sql);
list.Add(ame);
list.Add(del);
list.Add(add); OleDbParameter[] getparm = OledbHelper.GetCacheParameters(sql);
OleDbParameter[] addparm = OledbHelper.GetCacheParameters(add);
if (addparm == null)
{
addparm = new OleDbParameter[]
{ new OleDbParameter(Parm_name,OleDbType.VarChar,50,"attributeValue")
};
OledbHelper.CacheParameters(add, addparm);
}
addparm[0].Value = rr.AttributeValue; OleDbParameter[] delParm = OledbHelper.GetCacheParameters(del);
if (delParm == null)
{
delParm = new OleDbParameter[] { new OleDbParameter(Parm_cid, OleDbType.Integer, 4, "autoID") };
OledbHelper.CacheParameters(del, delParm);
}
delParm[0].Value = rr.AutoID; OleDbParameter[] ameParm = OledbHelper.GetCacheParameters(ame);
if (ameParm == null)
{
ameParm = new OleDbParameter[] { new OleDbParameter(Parm_name, OleDbType.VarChar, 50, "attributeValue") ,
new OleDbParameter(Parm_cid,OleDbType.Integer,4,"autoID")};
OledbHelper.CacheParameters(ame, ameParm);
}
ameParm[0].Value = rr.AttributeValue;
ameParm[1].Value = rr.AutoID; ArrayList ll = new ArrayList();
ll.Add(getparm);
ll.Add(ameParm);
ll.Add(delParm);
ll.Add(addparm);
Int32 val = 0;
try
{
val = OledbHelper.ExecuteNonQuery(OledbHelper.con, CommandType.Text, list, ds, ll);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
if (val > 0)
return true;
return false; }
看这个:
public static Int32 ExecuteNonQuery(OleDbConnection con, CommandType cmdType, string cmdText, DataSet ds, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbParameter parm = new OleDbParameter();
OleDbCommandBuilder builder = null;
Int32 val; PrepareCommand(cmd, con, null, cmdType, cmdText, ds, cmdParms);
da.SelectCommand = cmd;
builder = new OleDbCommandBuilder(da);
val = da.Update(ds);
return val;
}
///批处理
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public bool BON_All1(DataSet ds)
{
Int32 val = 0;
try
{
val = OledbHelper.ExecuteNonQuery(OledbHelper.con, CommandType.Text, sql, ds);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
if (val > 0)
return true;
return false; }
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
dt.Rows[i].ItemArray[0] = dataGridView1.Rows[i].Cells[0].Value;
}
在用SqlDataAdapter.Update(dt);更新到数据库中