首頁 > 後端開發 > C++ > 如何使用 .NET/C# 實作快速批次插入 Access 資料庫?

如何使用 .NET/C# 實作快速批次插入 Access 資料庫?

Patricia Arquette
發布: 2025-01-03 22:02:40
原創
764 人瀏覽過

How Can I Achieve Fast Bulk Inserts into an Access Database Using .NET/C#?

在.NET/C# 中寫入大量記錄(批次插入)來存取

問題:插入使用使用使用使用ADO.NET 將大型資料集轉換為Access資料庫是

解決方案:

在批次插入Access 時,使用DAO 比ADO.NET 有顯著的速度優勢:

1 。 DAO 使用欄位變數(2.8 秒):

DAO.Field[] myFields = new DAO.Field[20];
for (int k = 0; k < 20; k++) myFields[k] = rs.Fields["Field" + (k + 1).ToString()];

for (int i = 0; i < 100000; i++)
{
    rs.AddNew();
    for (int k = 0; k < 20; k++)
    {
        myFields[k].Value = i + k;
    }
    rs.Update();
}
登入後複製

2. DAO 使用列索引(11.0 秒):

for (int i = 0; i < 100000; i++)
{
    rs.AddNew();
    for (int k = 0; k < 20; k++)
    {
        rs.Fields[k].Value = i + k;
    }
    rs.Update();
}
登入後複製

3. DAO 使用列名稱(17.0秒):

for (int i = 0; i < 100000; i++)
{
    rs.AddNew();
    for (int k = 0; k < 20; k++)
    {
        rs.Fields["Field" + (k + 1).ToString()].Value = i + k;
    }
    rs.Update();
}
登入後複製

4. ADO.NET 使用INSERT 語句(79.0 秒):

for (int i = 0; i < 100000; i++)
{
    StringBuilder insertSQL = new StringBuilder("INSERT INTO TEMP (")
        .Append(names)
        .Append(") VALUES (");

    for (int k = 0; k < 19; k++)
    {
        insertSQL.Append(i + k).Append(",");
    }
    insertSQL.Append(i + 19).Append(")");
    cmd.CommandText = insertSQL.ToString();
    cmd.ExecuteNonQuery();
}
登入後複製

5. NET 使用DataTable 和DataAdapter(86.0秒):

for (int i = 0; i < 100000; i++)
{
    DataRow dr = dt.NewRow();
    for (int k = 0; k < 20; k++)
    {
        dr["Field" + (k + 1).ToString()] = i + k;
    }
    dt.Rows.Add(dr);
}
da.Update(dt);
登入後複製

6.使用自動化匯入的文字檔案(2.8 秒):

將資料匯出到文字檔案並使用Access Automation導入它(不建議用於大型資料集):
StreamWriter sw = new StreamWriter(Properties.Settings.Default.TEMPPathLocation);

for (int i = 0; i < 100000; i++)
{
    for (int k = 0; k < 19; k++)
    {
        sw.Write(i + k);
        sw.Write(",");
    }
    sw.WriteLine(i + 19);
}
sw.Close();

ACCESS.Application accApplication = new ACCESS.Application();
accApplication.OpenCurrentDatabase(databaseName, false, "");
accApplication.DoCmd.RunSQL("DELETE FROM TEMP");
accApplication.DoCmd.TransferText(TransferType: ACCESS.AcTextTransferType.acImportDelim,
    TableName: "TEMP",
    FileName: Properties.Settings.Default.TEMPPathLocation,
    HasFieldNames: true);
accApplication.CloseCurrentDatabase();
accApplication.Quit();
accApplication = null;
登入後複製

以上是如何使用 .NET/C# 實作快速批次插入 Access 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板