本文章以一个表为例,要转多个表则可将dataset关联多个表,下面给出完整代码,包括引用以及main函数与复制函数。
要说明的是,必须先用sql语句复制表结构,才能顺利的使用以下代码复制数据。
using system; using system.collections.generic; using system.linq; using system.text; using system.data; using system.data.sqlclient; using system.data.common; namespace copydata { class program { static void main(string[] args) { //要复制的表名 string table = "v_position"; //构造连接字符串 sqlconnectionstringbuilder builder1 = new sqlconnectionstringbuilder(); builder1.datasource = ".\\canfly"; //实例名称为canfly builder1.initialcatalog = "desdata"; //目标数据库 builder1.integratedsecurity = true; //使用windows身份验证 sqlconnectionstringbuilder builder2 = new sqlconnectionstringbuilder(); builder2.datasource = ".\\canfly"; builder2.initialcatalog = "bddata"; //源数据库 builder2.integratedsecurity = true; //调用复制数据库函数 inserttable(builder1.connectionstring, builder2.connectionstring, table); } //参数为两个数据库的连接字符串 private static void inserttable(string constring1, string constring2, string tabstr) { //连接数据库 sqlconnection conn1 = new sqlconnection(); conn1.connectionstring = constring1; conn1.open(); sqlconnection conn2 = new sqlconnection(); conn2.connectionstring = constring2; conn2.open(); //填充dataset1 sqldataadapter adapter1 = new sqldataadapter("select * from " + tabstr, conn1); dataset dataset1 = new dataset(); if (dataset1 != null) { adapter1.fill(dataset1, tabstr); } sqldataadapter adapter2 = new sqldataadapter("select * from " + tabstr, conn2); dataset dataset2 = new dataset(); sqlcommand cmd2 = new sqlcommand("select count(*) from " + tabstr, conn2); object res2 = cmd2.executescalar(); if (res2 != null) { int ncount = convert.toint32(res2.tostring()); if (ncount == 0) { conn1.close(); conn2.close(); return; } } //填充dataset2 if (dataset2 != null) { adapter2.fill(dataset2, tabstr); } //复制数据 for (int j = 0; j < dataset2.tables[0].rows.count; j++) { dataset1.tables[0].loaddatarow(dataset2.tables[0].rows[j].itemarray, false); } //将dataset变换显示在与其关联的目标数据库 sqlcommandbuilder cb = new sqlcommandbuilder(adapter1); adapter1.update(dataset1, tabstr); cb.refreshschema(); console.writeline("表" + tabstr + "复制成功!"); conn1.close(); conn2.close(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论