问题描述
Stringoutname1=null;Stringinname1=null;stringsql1="select"+outname1+"fromTEST.DBO.table1";DataTabledt=DBHelp.ExecDataTable(sql1);for(inti=0;i<dt.Rows.Count;i++){StringID=dt.Rows[i][0].ToString()+"'";StringNAME=dt.Rows[i][1].ToString()+"'";StringAGE=dt.Rows[i][2].ToString()+"'";StringSEX=dt.Rows[i][3].ToString()+"'";Stringname=ID+NAME+AGE+SEX;inname1=name2.Substring(0,name.Length-1);stringsql="insertintotable1("+outname1+")values("+inname1+")";}
目的是:一种数据库导入林一种数据库。这样循环是插入,但是实际数据库表会有不同的字段,所以这样写是不对的,求大神指点如何写成动态的,这样只要传入不同的表名,就可以了导入了。
解决方案
解决方案二:
boolImportData<T>(stringtableName,DataTablesourceDT,Tentity){//遍历sourceDT,构造目标数据源列表(List<entity>)//把List<entity>使用SqlBulckCopy批量导入数据库}
解决方案三:
做个XML对应他们之间的关系..
解决方案四:
直接执行SQL指令:insertinto库.表(字段列表)select字段列表from库.表where条件不就行了,何必搬过来又送过去?
解决方案五:
Stringoutname1=null;Stringinname1=null;stringsql1="select"+outname1+"from"+tableName;DataTabledt=DBHelp.ExecDataTable(sql1);List<string>columns=dt.Columns.Cast<DataColumn>().Select(o=>o.ColumnName).ToList();List<string>Values=newList<string>();for(inti=0;i<dt.Rows.Count;i++){Values=newList<string>();for(intc=0;c<columns.Count;c++){Values.Add(dt.Rows[i][columns[c]].ToString());}outname1=string.Join(",",columns.ToArray());inname1=string.Join("','",Values.ToArray());stringsql="insertintotable1("+outname1+")values('"+inname1+"')";}
解决方案六:
表名和字段都有可能不同,估计只有自己根据实际情况找规律了