Question: What is the best way to perform bulk inserts into an MS Access database from .NET? Using ADO.NET, it is taking way over an hour to write out a large dataset.

*Note that my original post, before I "refactored" it, had both the question and answer in the question part. I took Igor Turman's suggestion and re-wrote it in two parts - the question above and followed by my answer.*

Answer: 
First make sure that the access table columns have the same column names and similar types. Then you can use this function which I believe is very fast and elegant.

```
public void AccessBulkCopy(DataTable table)
{
    foreach (DataRow r in table.Rows)
        r.SetAdded();

    var myAdapter = new OleDbDataAdapter("SELECT * FROM " + table.TableName, _myAccessConn);

    var cbr = new OleDbCommandBuilder(myAdapter);
    cbr.QuotePrefix = "[";
    cbr.QuoteSuffix = "]";
    cbr.GetInsertCommand(true);

    myAdapter.Update(table);
}

```
Another method to consider, involving linking tables via DAO or ADOX then executing statements like this:

```
SELECT * INTO Table1 FROM _LINKED_Table1

```

Please see my full answer here:  

[MS Access Batch Update via ADO.Net and COM Interoperability](https://stackoverflow.com/questions/15788441/ms-access-batch-update-via-ado-net-and-com-interoperability/26287252#26287252)