• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

datatable数据插入到SQL, 急!!大家帮忙,解决马上给分

jxqyj1 2008-04-16 10:34:22
我用datatable 读出了excel的数据,想把数据insert 到SQL的员工表中,小弟不懂,大家帮帮忙
...全文
144 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Xzoth 2008-04-17
循环插入效率差,既然数据已经存在DataTable中,
那就使用批量更新插入进数据库吧



SqlDataAdapter dataAdapter = new SqlDataAdapter(SQL, CONNECTION);
string insertSQL = "INSERT INTO [Employee]([name], [age]) VALUES(@name, @age)";

SqlCommand insertCmd = new SqlCommand(insertSQL, CONNECTION);
insertCmd.Parameters.Add(new SqlParameter("@name", SqlDbType.Char, 32, "name"));//name是DataTable中对应的列名
insertCmd.Parameters.Add(new SqlParameter("@age", SqlDbType.Real, 8, "age"));

dataAdapter.InsertCommand = insertCmd;
insertCmd.UpdatedRowSource = UpdateRowSource.None;

dataAdapter.UpdateBatchSize = 0;
dataAdapter.Update(DataTable);



回复
光义 2008-04-17

没搞过...学习下...
回复
fengniumaxi 2008-04-17
foreach(DataRow dr in datatable)
{
str sql="insert into employee(,,,,,)values(dr.cells[0],dr.cells[1],,,) where ……";
sqlconnection con=new sqlconnection(connectionstrings);
sqlcommand cmd=new sqlcommand(sql,con);
con.open();
cmd.excutenonquery();
}
我手写的,没测试,具体大概就是这个样子,思想是这样的.
回复
ZGZice 2008-04-17
如果,结构一致的话,把整个表更新进去 ,会不会更方便
回复
孤剑 2008-04-17
1 4 楼的兄弟的代码都比较好,通俗易懂,也比较容易理解。

对于性能要求比较高的方法,可以借鉴 3 楼兄弟的思路——批量处理数据。
回复
changjiangzhibin 2008-04-17

//假设数据库中有需要插入三列,col1,col2,col3,其它字段为可空
//假设均为字符型,其它类型的话要转换一下,Convert.To...
//DataTable中有对应的三列数据,每行的1,3,5列
foreach(DataRow dr in datatable.Rows)
{
string c1 = dr[1].ToString();
string c2 = dr[3].ToString();
string c3 = dr[5].ToString();
InsertDB(c1,c2,c3);
}

private void InsertDB(string c1,string c2,string c3)
{
SqlConnection conn = null;
try
{
string connStr = ConfigurationManager.Configuration["connectionString"].ConnectionString;
conn = new SqlConnection(connStr);
string sql = "insert into Employee(col1,col2,col3)"
sql += "values('"+c1+"','"+c2+"','"+c3+"')";
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
int rows = cmd.ExecuteNonQuery();
}
finaly
{
if(conn != null)
{
conn.Close();
conn.Dispose();
}
}
}
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2008-04-16 10:34
社区公告

让您成为最强悍的C#开发者