业务需要从一个数据库复制数据到另一个数据库。当然可以一条一条的复制,但是两个数据库的表结构相同,通过操作dataset批量复制数据到另一个数据库,不管从开发效率还是执行效率上来说是不是更好一些呢。
需要注意的点,如下:
1、数据库中必须有主键,这样才便于增删改查;
2、sqldataadapter必须放在sqlcommandbuilder中,以用于批量执行dataset中的修改;
3、修改后的dataset需执行acceptchanges()方法后,才能更新dataset,以便于下一步操作;
4、sqldataadapter执行update的数据库不一定是fill的数据库,只要表结构相同即可。
示例代码如下:
public void copydata(dataset ds, string constring, string sql, string tablename) { sqlconnection conn = new sqlconnection(constring); try { conn.open(); sqldataadapter ada = new sqldataadapter(sql, conn); sqlcommandbuilder cb = new sqlcommandbuilder(ada); dataset destdataset = new dataset(); ada.fill(destdataset, tablename); //delete rows foreach (datarow item in destdataset.tables[pattern].rows) { item.delete(); } datatable dt = null; dt = destdataset.tables[pattern].getchanges(); if (dt != null) { ada.update(dt); } //insert rows foreach (datarow item in ds.tables[pattern].rows) { item.setadded(); } dt = ds.tables[pattern].getchanges(); if (dt != null) { ada.update(dt); } } catch (exception ex) { throw ex; } finally { conn.close(); } }
这是一个复制数据库的方法,功能为删除掉原有数据库中的数据,然后根据传过来的dataset,把dataset中的数据更新到数据库中。
这只是一个小例子,有不当的地方,希望大家讨论指正。
