daixinet

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  211 随笔 :: 0 文章 :: 115 评论 :: 68万 阅读

     业务需要从一个数据库复制数据到另一个数据库。当然可以一条一条的复制,但是两个数据库的表结构相同,通过操作DataSet批量复制数据到另一个数据库,不管从开发效率还是执行效率上来说是不是更好一些呢。

    需要注意的点,如下:

1、数据库中必须有主键,这样才便于增删改查;

2、SqlDataAdapter必须放在SqlCommandBuilder中,以用于批量执行DataSet中的修改;

3、修改后的DataSet需执行AcceptChanges()方法后,才能更新DataSet,以便于下一步操作;

4、SqlDataAdapter执行Update的数据库不一定是Fill的数据库,只要表结构相同即可。

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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中的数据更新到数据库中。

这只是一个小例子,有不当的地方,希望大家讨论指正。

posted on   daixinet.com  阅读(4569)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示