您的位置:首页 > 数据库

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

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

言归正传。。

手动方式更新变动的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时才能成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: