摘要:ASP.NET (C#) 数据库-01_ADO_NET-04_DataSet-05_ModifyDataRowCommandBuilder
一、数据库 DataSet 对象使用 CommandBuilder 自动产生命令参数列异动伺服端实例数据的操作范例:
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
partial class _01_ADO_NET_04_DataSet_05_ModifyDataRowCommandBuilder : System.Web.UI.Page
{
//设定欲执行的 SQL 命令、预存进程或数据表名称字符串。
string strSQL = "SELECT * FROM News_Tb";
//取得 Web.config 档的数据连接设定。(Access 数据库)
ConnectionStringSettings setting_01 = ConfigurationManager.ConnectionStrings["OLEDB_Access_DB_ConnectionString01"];
//取得 Web.config 档的数据连接设定。(MS-SQL(MDF) 数据库)
ConnectionStringSettings setting_02 = ConfigurationManager.ConnectionStrings["MS-SQL_DB_ConnectionString01"];
//取得 Web.config 档的数据连接设定。(MS-SQL 数据库)
ConnectionStringSettings setting_03 = ConfigurationManager.ConnectionStrings["MS-SQL_DB_ConnectionString02"];
//建立对象案例。
DataSet objDataSet = new DataSet();
//当页面载入时所要执行动作。
protected void Page_Load(object sender, System.EventArgs e)
{
//建立对象案例。(选择数据连结模式)
OleDbConnection objOleDbConnection_01 = new OleDbConnection(setting_01.ConnectionString);
//建立对象案例。(并加入 SQL 陈述式,用来执行 SQL 命令,用来之后将执行结果返回的数据放入 DataSet 对象)
OleDbDataAdapter objOleDbDataAdapter_01 = new OleDbDataAdapter(strSQL, objOleDbConnection_01);
//建立对象案例。(会自动建立相关的 Command 查询、新增、删除、修改,等参数列)
OleDbCommandBuilder objOleDbCommandBuilder_01 = new OleDbCommandBuilder(objOleDbDataAdapter_01);
//建立对象案例。(用来执行 SQL 命令,用来之后将执行结果返回的数据放入 DataSet 对象)
SqlConnection objSqlConnection_02 = new SqlConnection(setting_02.ConnectionString);
//建立对象案例。(并加入 SQL 陈述式,用来执行 SQL 命令,用来之后将执行结果返回的数据放入 DataSet 对象)
SqlDataAdapter objSqlDataAdapter_02 = new SqlDataAdapter(strSQL, objSqlConnection_02); ;
//建立对象案例。(会自动建立相关的 Command 查询、新增、删除、修改,等参数列)
SqlCommandBuilder objSqlCommandBuilder_02 = new SqlCommandBuilder(objSqlDataAdapter_02);
//建立对象案例。(用来执行 SQL 命令,用来之后将执行结果返回的数据放入 DataSet 对象)
SqlConnection objSqlConnection_03 = new SqlConnection(setting_03.ConnectionString);
//建立对象案例。(选择数据连结模式)
SqlDataAdapter objSqlDataAdapter_03 = new SqlDataAdapter(strSQL, objSqlConnection_03);
//建立对象案例。(会自动建立相关的 Command 查询、新增、删除、修改,等参数列)
SqlCommandBuilder objSqlCommandBuilder_03 = new SqlCommandBuilder(objSqlDataAdapter_03);
//使用 DataAdapter 对象的 Full() 方法,将 SQL 命令执行结果所选取的数据放入 DataSet 对象。
//参数一:是要放入数据的 DataSet 对象。(Access 数据库)
objOleDbDataAdapter_01.Fill(objDataSet, "News_Tb");
//参数一:是要放入数据的 DataSet 对象。(MS-SQL 数据库)
//objSqlDataAdapter_02.Fill(objDataSet, "News_Tb");
//声明对象变量。(用来存放数据表)
DataTable dtDataTable = objDataSet.Tables["News_Tb"];
//更新数据列。(经测试后,只能指定 Rows(x) 的数值来代表目前记录数,其余参数是更新数据用)
dtDataTable.Rows[0]["News_Subject_F"] = "小丸子更新后1";
dtDataTable.Rows[0]["TouchCounts_F"] = 20;
//删除数据列。
dtDataTable.Rows[0].Delete();
//声明对象变量。(用来存放数据列)
DataRow drDataRow = dtDataTable.NewRow();
//新增数据列
drDataRow["News_ID_F"] = 97;
drDataRow["News_Subject_F"] = "小丸子90";
dtDataTable.Rows.Add(drDataRow);
//将 DataSet 对象的数据更新回数据来源。
//此程序段方式是由程序段前后依序执行结果。
//objDataAdapter.Update(objDataSet, "News_Tb")
//此程序段方式可以固定并指定对像执行结果。
//由上述objDataAdapter.Update(objDataSet, "News_Tb")方式,请选择一种使用。
objOleDbDataAdapter_01.Update(dtDataTable.Select(null, null, DataViewRowState.ModifiedCurrent));
objOleDbDataAdapter_01.Update(dtDataTable.Select(null, null, DataViewRowState.Deleted));
objOleDbDataAdapter_01.Update(dtDataTable.Select(null, null, DataViewRowState.Added));
//释放与关闭占用的连接资源。
objOleDbCommandBuilder_01.Dispose();
objSqlCommandBuilder_02.Dispose();
objSqlCommandBuilder_03.Dispose();
dtDataTable.Dispose();
objDataSet.Dispose();
objOleDbDataAdapter_01.Dispose();
objSqlDataAdapter_02.Dispose();
objSqlDataAdapter_03.Dispose();
}
}
详细 UI 部分请自行参阅源代码的.aspx 部分
AspDataBase.rar
原文:大专栏 ASP.NET (C#) 数据库-01_ADO_NET-04_DataSet-05_ModifyDataRowCommandBuilder