界面就一个datagridview和button,当点击button的时候,如何
把datagridview中的新数据追加进数据库的表中.

解决方案 »

  1.   

    DataGridView中做的数据改变会反映到它所绑定的DataTable里,最后使用SqlDataAdapter的Update方法,把修改反映到数据库中
      

  2.   

    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();
                    }
                }
      

  3.   

    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;        }
      

  4.   

    呵呵,这方法多了
    看这个:
    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;
            }
      

  5.   

    /// <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;        }
      

  6.   

    把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);更新到数据库中