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();
}
我手写的,没测试,具体大概就是这个样子,思想是这样的.

解决方案 »

  1.   

    循环插入效率差,既然数据已经存在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);
      

  2.   


    //假设数据库中有需要插入三列,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();
        }
      }
    }