问题描述
我用datatable读出了excel的数据,想把数据insert到SQL的员工表中,小弟不懂,大家帮帮忙
解决方案
解决方案二:
foreach(DataRowdrindatatable){strsql="insertintoemployee(,,,,,)values(dr.cells[0],dr.cells[1],,,)where……";sqlconnectioncon=newsqlconnection(connectionstrings);sqlcommandcmd=newsqlcommand(sql,con);con.open();cmd.excutenonquery();}我手写的,没测试,具体大概就是这个样子,思想是这样的.
解决方案三:
没搞过...学习下...
解决方案四:
循环插入效率差,既然数据已经存在DataTable中,那就使用批量更新插入进数据库吧SqlDataAdapterdataAdapter=newSqlDataAdapter(SQL,CONNECTION);stringinsertSQL="INSERTINTO[Employee]([name],[age])VALUES(@name,@age)";SqlCommandinsertCmd=newSqlCommand(insertSQL,CONNECTION);insertCmd.Parameters.Add(newSqlParameter("@name",SqlDbType.Char,32,"name"));//name是DataTable中对应的列名insertCmd.Parameters.Add(newSqlParameter("@age",SqlDbType.Real,8,"age"));dataAdapter.InsertCommand=insertCmd;insertCmd.UpdatedRowSource=UpdateRowSource.None;dataAdapter.UpdateBatchSize=0;dataAdapter.Update(DataTable);
解决方案五:
//假设数据库中有需要插入三列,col1,col2,col3,其它字段为可空//假设均为字符型,其它类型的话要转换一下,Convert.To...//DataTable中有对应的三列数据,每行的1,3,5列foreach(DataRowdrindatatable.Rows){stringc1=dr[1].ToString();stringc2=dr[3].ToString();stringc3=dr[5].ToString();InsertDB(c1,c2,c3);}privatevoidInsertDB(stringc1,stringc2,stringc3){SqlConnectionconn=null;try{stringconnStr=ConfigurationManager.Configuration["connectionString"].ConnectionString;conn=newSqlConnection(connStr);stringsql="insertintoEmployee(col1,col2,col3)"sql+="values('"+c1+"','"+c2+"','"+c3+"')";conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);introws=cmd.ExecuteNonQuery();}finaly{if(conn!=null){conn.Close();conn.Dispose();}}}
解决方案六:
14楼的兄弟的代码都比较好,通俗易懂,也比较容易理解。对于性能要求比较高的方法,可以借鉴3楼兄弟的思路——批量处理数据。
解决方案七:
如果,结构一致的话,把整个表更新进去,会不会更方便