首先,要在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绑定的表相关联的引用.
所以必须一个一个的赋值^_^.......
联系客服