自己构造的DataTable怎么高效率的更新到数据库去? RT,自己构造的DataTable,跟数据库中表中的结构一样,除了一条条的更新、插入(我是根据ID字段判断是否含有这个条记录,有就执行更新操作,没有就执行插入操作),请问下还有什么高效办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先根据DataTable的ID列全部删除,再全部添加,这样就不需要判断是否有这个记录了 DataAdapter有update方法,自己在网上学习一下。具体我也没用过,看别人用过 1.把数据的ID拿出来,变成一个int数组然后判断那些是可以直接插入的 那些是需要更新的 分成2张DataTable这样就可以减少判断的次数可以直接插入的有个好用的方案http://www.cnblogs.com/xyd21c/archive/2011/01/07/1929861.html要更新的 只有一步一步来了 樓上幾位思路是正确的,可是操作可以簡單化1. 跟據ID重新設置RowState, 比如: Row.RowSate= (id=1: Add, id=2 Edit, id=3 Delete)2. 用Adapter, 綁定3個SqlCommand3. Adapter.Update(DataTable) 用SqlBulkCopy.WriteToServer(DataTable) 批量加载.也可以考虑BCP的方式。 SqlDataAdapter sda = new SqlDataAdapter(); DataTable dt = new DataTable(); int flag= sda.Update(dt); public static void UpdateDataTable(SqlConnection connection, string selectCommandText, DataTable table) { if (connection == null) throw new ArgumentNullException("connection"); if (connection.State != ConnectionState.Open) { connection.Open(); } SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(selectCommandText, connection); SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.Update(table); connection.Close(); }会自动判断DataTable中的Add, Update,Delete 数据,并更新到数据库中。DataTable table = 数据库获取的的数据 (select * from t0)//对table 进行Add, Update,Delete 操作的代码.......//更新tableUpdateDataTable(conn,"select * from t0",table); 多个线程的同步问题 用一条语句如何能实现 switch...case 的效果? 得到容器上的所有控件的文本 MessageBox的使用问题.DialogResult.Yes No????? 如何让写出的操作Excel,word的程序与具体版本的office无关。 急!求教C#高手关于调试管理器服务被禁用 C#连连看怎么实现连线效果? 想在c#和java中选一个,给点意见.客观点. 使用数据集时出现数据库连接DataSet不包含Tables的定义 FTP Error: 226 Transfer complete. C#实现游戏的窗口化 base64解码和3DES解密出错(C#)
1.把数据的ID拿出来,变成一个int数组
然后判断那些是可以直接插入的 那些是需要更新的 分成2张DataTable这样就可以减少判断的次数可以直接插入的有个好用的方案
http://www.cnblogs.com/xyd21c/archive/2011/01/07/1929861.html要更新的 只有一步一步来了
2. 用Adapter, 綁定3個SqlCommand
3. Adapter.Update(DataTable)
也可以考虑BCP的方式。
SqlDataAdapter sda = new SqlDataAdapter();
DataTable dt = new DataTable();
int flag= sda.Update(dt);
{
if (connection == null) throw new ArgumentNullException("connection");
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(selectCommandText, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(table);
connection.Close();
}会自动判断DataTable中的Add, Update,Delete 数据,并更新到数据库中。DataTable table = 数据库获取的的数据 (select * from t0)
//对table 进行Add, Update,Delete 操作的代码
.......//更新table
UpdateDataTable(conn,"select * from t0",table);