手动方式更新变动的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时才能成功。
言归正传。。
手动方式更新变动的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时才能成功。
相关文章推荐
- [C#]使用DataSet Datatable 更新数据库的三种方式
- ADO.NET 更新数据库的2种方式::(1)使用DataSet对象更新数据集;(2)使用SqlCommand对象更新单条记录
- 使用DataSet Datatable 更新数据库的三种方式
- 使用DataSet更新数据库的两种方式
- 使用DataSet Datatable 更新数据库的三种方式及DataTable不同状态的取值
- c#窗体控件datagriview与dataset的运用:修改,新增,删除,查找,保存,更新
- 使用DataSet Datatable 更新数据库的三种方式
- DataSet 更新到数据库
- C#从数据库读取数据到DataSet并保存到xml文件
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- 资源共享(如何用DataSet更新数据库)
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 谈谈有关各数据库Blob、Clob类型字段的读取、保存更新
- 通过 SqlDataAdapter.update 方法通过DataSet更新数据库
- 用DataSet或者DataTable更新数据库时的错误
- 简单实用的DataSet更新数据库的类+总结(c#) 选择自 allen_21229 的 Blog
- 自动批量更新DataSet中的数据到数据库
- C#如何重DataSet的DataTable里面删除信息并更新到数据库
- WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片
- DataSet 反向更新数据库的数据增加