Update database with changes made to DataTable… confusion

前端 未结 2 1643
轮回少年
轮回少年 2020-12-09 05:57

If I fill a DataTable with DataAdapter.Fill(DataTable); and then make changes to a row in the DataTable with something simple like this: DataTable.Rows[0]

相关标签:
2条回答
  • 2020-12-09 06:30

    Here is an actual helpful answer in case anyone else needs to know how to do this:

    string selectStatement = "SELECT * FROM Contact";
    System.Data.DataTable dt = new System.Data.DataTable();
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
    conn.Open();
    SqlDataAdapter sqlDa = new SqlDataAdapter();
    sqlDa.SelectCommand = new SqlCommand(selectStatement, conn);
    SqlCommandBuilder cb = new SqlCommandBuilder(sqlDa);
    sqlDa.Fill(dt);
    dt.Rows[0]["Name"] = "Some new data here";
    sqlDa.UpdateCommand = cb.GetUpdateCommand();
    sqlDa.Update(dt);
    
    0 讨论(0)
  • Take note of SqlBulkCopyOptions.KeepIdentity , you may or may not want to use this for your situation.

    using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
    {
          // my DataTable column names match my SQL Column names, so I simply made this loop. However if your column names don't match, just pass in which datatable name matches the SQL column name in Column Mappings
          foreach (DataColumn col in table.Columns)
          {
              bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
          }
          bulkCopy.BulkCopyTimeout = 600;
          bulkCopy.DestinationTableName = destinationTableName;
          bulkCopy.WriteToServer(table);
    }
    
    0 讨论(0)
提交回复
热议问题