sql+datagridview 更新数据库

来源:互联网 发布:数据检索 编辑:程序博客网 时间:2024/05/01 17:31

1. 有时候,会遇到datagridview中cell的值更新了,但是通过SqlDataAdapter.Update(dt)却不能够更新数据,比如在datagridview的cellvaluechanged的事件中直接使用,是不能立即更新的,在cellendedit事件中也是一样,以下是解决办法:

在cellendedit事件中

this.Validate();//有效性,此句很重要

SqlCommandBuilder com = new SqlCommandBuilder(cAdapter);
                com.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
                cAdapter.UpdateCommand = com.GetUpdateCommand();
                cAdapter.DeleteCommand = com.GetDeleteCommand();
                cAdapter.UpdateCommand.Connection = conn;
                cAdapter.DeleteCommand.Connection = conn;
                conn.Open();
                cAdapter.Update(dt);
                dt.AcceptChanges();
                DataSet ds = new DataSet();
                cAdapter.Fill(ds);
                return ds.Tables[0];

2.上述的代码在更改后焦点转移到其他控件时也会出现无法更新的状况,我们就需要在没更新成功时,datagridview能够实时的和数据库保持一致,这样,我们能够知道是否是已经更新成功了,于是下面的函数完好的解决了这个问题

public static DataTable UpdateData(DataTable dt, SqlDataAdapter cAdapter)
        {
            SqlConnection conn = new SqlConnection(Properties.Settings.Default.sqlsource);
            try
            {
                SqlCommandBuilder com = new SqlCommandBuilder(cAdapter);
                com.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
                cAdapter.UpdateCommand = com.GetUpdateCommand();
                cAdapter.DeleteCommand = com.GetDeleteCommand();

 cAdapter.InsertCommand = com.GetInsertCommand();
                cAdapter.UpdateCommand.Connection = conn;
                cAdapter.DeleteCommand.Connection = conn;

cAdapter.InsertCommand.Connection = conn;
                conn.Open();
                cAdapter.Update(dt);
                dt.AcceptChanges();
                DataSet ds = new DataSet();
                cAdapter.Fill(ds);
                return ds.Tables[0];
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("\n更新数据库出错,可能是数据库出现异常,请稍后再试,或者联系管理员解决" + "\n" + ex.Message + "\n" + ex.StackTrace);
                return null;
            }
            finally
            {
                conn.Close();
            }
        }


调用时直接使用datagridview.datasource=DataTable UpdateData(DataTable dt, SqlDataAdapter cAdapter)即可。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刑政复议通知书被邮政延误了怎么办 高考听力报名注册了两个用户怎么办 左腿神经损伤夏天脚冰凉怎么办 给区组织部的介绍信给到社区怎么办 被丈夫和儿子强送精神病院怎么办 练车穿短袖晒的胳膊特别黑怎么办 车子卖了对方迟迟不过户怎么办 成都华西医院就诊卡密码忘了怎么办 资阳办健康证怎么办要预约吗 头发出油厉害怎么办民间小偏方 你帮助别人别人却想着害你怎么办 怀孕接触有辐射的东西回怎么办 苹果手机用久了有点卡怎么办 4s店把我车撞了怎么办 长安之星2代大灯高不聚光怎么办 被电动车撞了人跑了怎么办 车被电动车撞了对方跑了怎么办 房子卖了户口没地方迁怎么办 酷派大神f2开不开机怎么办 酷派手机玩游戏竖屏怎么办 身上起红疙瘩很痒怎么办越挠越多 苹果6s指纹解锁坏了怎么办 案子结了网上追逃的怎么办 贷款买的手机不还了会怎么办 支付宝手机号没用了登陆不了怎么办 支付宝绑定的手机号注销了怎么办 考勤机进水了不能识别指纹怎么办? 网商银行人脸识别失败怎么办 电脑网页上的字变小了怎么办 把光驱换成固态硬盘后不识别怎么办 相机内存卡电脑读不出来怎么办 sd卡在电脑上无法格式化怎么办 内存卡突然读不出来了怎么办 怀孕两个月胎儿死在腹中怎么办 香港公司在大陆卖地皮资金怎么办 结婚证上的身份证号码错了怎么办 身份证快过期了人在外地怎么办 邮政电话银行登录密码忘记了怎么办 如果欠了3w不敢和家里说怎么办 大四学生欠了3w该怎么办 房子付了首付贷款贷不下来怎么办