DataAdapter 和 Dataset 仅更新做了修改的数据 是如何实现的? DataAdapter 和 Dataset 仅更新做了修改的数据,它这个机制是如何实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对与DataSet中修改和删除的列都有相应的标识,提交的数据库时根据此标识进行更改 DataSet(DataTable)是数据库表的客户端的一个缓存或拷贝。在客户对DataTable进行增、删、改操作时会在对应的DataRow上标上记号,如Added, Modified, Deleted等。DataAdapter.Update时会轮循这些DataRow,根据标记(RowState)执行相应的Sql语句。 接点分补充查看DataRowView类得相关知识是否是需要 用的是RowState,但是这个方法一般不用 使用SqlCommandBuilder 自动生成SQL,自动更新 /// <summary> /// 根据数据集修改数据库 /// </summary> /// <param name="ds">数据集</param> /// <param name="sql">获得次数据集的查询语句或存储过程</param> /// <param name="parameters">参数列表</param> /// <returns>受影响的行数</returns> public static int AcceptChanges(DataSet ds, string sql, params SqlParameter[] parameters) { int rows = 0; //取出表结构 SqlCommand cmd = new SqlCommand(sql, conn); if (sql.ToLower().StartsWith("select ")) { cmd.CommandType = CommandType.Text; } else { cmd.CommandType = CommandType.StoredProcedure; } if (parameters != null) { for (int i = 0; i < parameters.Length; i++) { cmd.Parameters.Add(parameters[i]); } } SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; //生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。 SqlCommandBuilder cb = new SqlCommandBuilder(da); try { rows = da.Update(ds, sql); ds.AcceptChanges(); } catch { } return rows; } 使用SqlCommandBuilder 时必须先查询,取出表结构和数据然后和修改过的数据集进行比较所以数据集使用什么查询语句查出的,这里还需要用什么语句查询,这点非常重要 打印汉化! winform初学。几个问题求解 TextBox显示按键值会有重复值出现 winform中treeview的问题! 求解DataTable.Select() 中反向like 问题 C#中关于使用Lock()的一点疑问 急,帮我看看这段代码缺什么命名空间,或是那出错了。 求一个正则表达式 DotNetBar 中如何实现像.NET 点击视图——工具箱上后可以显示工具箱窗口。 在C#.net中怎样注册COM 动态库 记不得一个函数了 ADO.Net 与 Schema 菜问.
DataAdapter.Update时会轮循这些DataRow,根据标记(RowState)执行相应的Sql语句。
补充
查看DataRowView类得相关知识是否是需要
/// 根据数据集修改数据库
/// </summary>
/// <param name="ds">数据集</param>
/// <param name="sql">获得次数据集的查询语句或存储过程</param>
/// <param name="parameters">参数列表</param>
/// <returns>受影响的行数</returns>
public static int AcceptChanges(DataSet ds, string sql, params SqlParameter[] parameters)
{
int rows = 0;
//取出表结构
SqlCommand cmd = new SqlCommand(sql, conn);
if (sql.ToLower().StartsWith("select "))
{
cmd.CommandType = CommandType.Text;
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (parameters != null)
{
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}
}
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
//生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。
SqlCommandBuilder cb = new SqlCommandBuilder(da);
try
{
rows = da.Update(ds, sql);
ds.AcceptChanges();
}
catch
{
}
return rows;
}
所以数据集使用什么查询语句查出的,这里还需要用什么语句查询,这点非常重要