分享

SqlServer将一个数据库中表的数据复制到另一个数据库的表中

 浪_淘_沙 2012-08-04

首先,要在A和B数据库中创建两个同名同结构的表,其中B数据库的表为目标表.

复制语句如下:

            SqlConnection ConectionFrom = new SqlConnection("Data Source=192.168.1.59;Initial Catalog=A;uid=dev;pwd=dev");//数据库连接语句,看情况自己改
            string sqlfrom = "SELECT * FROM FLFTD_NFLOutLine";
//查表语句,看情况自己改
            SqlDataAdapter adfrom = new SqlDataAdapter(sqlfrom, ConectionFrom);
            DataTable dtfrom = new DataTable();
            adfrom.Fill(dtfrom);

            SqlConnection ConectionTo = new SqlConnection("Data Source=192.168.1.59;Initial Catalog=B;uid=dev;pwd=dev");//数据库连接语句,看情况自己改

           string sqlto = "SELECT * FROM FLFTD_NFLOutLine";  //查表语句,看情况自己改
            SqlDataAdapter adto = new SqlDataAdapter(sqlto, ConectionTo);
            DataTable dtto = new DataTable();
            adto.Fill(dtto);//填结构
       
           // dtto = dtfrom.Copy();//不好用
            //dtto.Merge(dtfrom);//不好用
          
for (int i = 0; i < dtfrom.Rows.Count; i++)
            {
                DataRow dr = dtto.NewRow();//根据datatable结构新建行
                for (int j = 0; j < dtfrom.Columns.Count; j++)
                {
                    dr[j] = dtfrom.Rows[i][j];//复制
                }
                dtto.Rows.Add(dr);//添加该行
            }

            SqlCommandBuilder cb = new SqlCommandBuilder(adto);
            adto.Update(dtto);//可以理解为把内存中的ds值写入数据库用

具体思想非常简单,就是用不同的adapter绑定2个不同DataTable,从一个DataTable拷贝到另一个DataTable.但是问题在于使用DataTable的Copy和Merge方法都无效,虽然在内存中可以看到dtto表已赋值,但是执行Update方法之后,数据库仍未改变.我怀疑是Copy方法返回一个新的DataTable引用覆盖了原来和adapter绑定的表相关联的引用.

所以必须一个一个的赋值^_^.......

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多