首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForms 將 SQL Server 查詢結果批量寫入 Access

     編輯:程式設計綜合問答

跨數據庫異構遷移常見場景:從 SQL Server 按條件查詢數據,批量插入 Access (.mdb/.accdb)。核心思路:SqlDataAdapter.Fill(DataTable) 取數 → 遍歷 DataRow 構建參數化 OleDbCommand 寫入 Access。

關鍵代碼框架

DataTable dt = new DataTable();
using (var sqlConn = new SqlConnection(sqlConnStr)) {
    sqlConn.Open();
    new SqlDataAdapter("SELECT col1,col2 FROM src_tbl WHERE cond", sqlConn).Fill(dt);
}
using (var accConn = new OleDbConnection(accConnStr)) {
    accConn.Open();
    foreach (DataRow row in dt.Rows) {
        string sql = "INSERT INTO dst_tbl (col1,col2) VALUES (?,?)";
        using (var cmd = new OleDbCommand(sql, accConn)) {
            cmd.Parameters.AddWithValue("@p1", row["col1"]);
            cmd.Parameters.AddWithValue("@p2", row["col2"]);
            cmd.ExecuteNonQuery();
        }
    }
}

優化建議

  • 批量插入:Access 支持多值插入 INSERT INTO ... VALUES (...),(...),... 可大幅提速
  • 事務包裹:OleDbTransaction 保證原子性
  • 類型映射:注意 SQL Server datetime → Access DateTime、bit → Yes/No 轉換
  • 大數據量:考慮 SqlBulkCopy 導出 CSV 再 DoCmd.TransferText 導入

參數化查詢優勢

防止注入、自動處理日期/字符串格式、避免拼接錯誤。切勿使用字符串拼接構建 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved