手动方式更新变动的dataset 保存到数据库(非控件)

标题不好取名,自己已形成一个大概观念,感觉还可以,但是如果没看过文章可能会对标题产生疑惑,希望大家原谅。^_^

言归正传。。

 

手动方式更新变动的dataset 保存到数据库 ,就是只使用数据库相关的几个对象,也不使用图形控件来完成更新数据到库。

我在百度上也查了很久,好像大家说的都不是很全,这里是小弟的工夫不到家。不过即然找到方法,就写出来大家讨论。

 

先看代码(带注释)

 

SqlCommand controlComm = new SqlCommand();
                            controlComm.Connection = sqlConn;//设置连接
                            controlComm.CommandText = "select * from OPERATORCARDCONTROL where OPERATORID='" + sOperID + "'";
                            SqlDataAdapter dataAdapter = new SqlDataAdapter(controlComm);
                            DataSet dataSet = new DataSet();
                            dataAdapter.Fill(dataSet, "Update_OPERATORCARDCONTROL");
                            DataTable dataTable = dataSet.Tables["Update_OPERATORCARDCONTROL"];

                           //上面这段大家应该都比较熟悉,就是一般的打开数据库,查询数据到dataset 中


                            SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);//这一句是关键,具体在下面说明
      
                                for (; j < dataTable.Rows.Count; j++)
                                {
                                    dataRow = dataTable.Rows[j];

                                    DBOrderNo = ((Int32)dataRow["ORDERNUMBER"]).ToString();//库中已存在的编号                              
                                    if (DBOrderNo == AProdInfo.Dimensions[i].CheckNameNO)//这是业务逻辑,就是查找编号是否存在,读者可以略过
                                    {
                                        bFindOrderNO = true;
                                        break;
                                    }
                                }

                                if (!bFindOrderNO)//不存在
                                    dataRow = dataTable.NewRow();

                                dataRow.BeginEdit();  //开始编辑行
                                try
                                {
                                    //字段更新代码,这里被删掉
                                    dataRow.EndEdit();
                                }
                                catch (Exception e)
                                {
                                    dataRow.CancelEdit();
                                    throw;
                                }
                                if (!bFindOrderNO)//不存在
                                    dataTable.Rows.Add(dataRow); ;
                            }
                                                                                    
                            //dataTable.AcceptChanges();//如果要更新到库,这句省
                           
                            int pi =dataAdapter.Update(dataTable);//更新到库

 

大概代码就是这样,从产品代码中直接copy下来,经过删减

其中关键就在SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter) 这句,sqlcommandbuilder 对象自动为dataadapter 对象生成update,delete 代码。所以在update时才能成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值