从数据集中批量插入访问

Posted

技术标签:

【中文标题】从数据集中批量插入访问【英文标题】:Bulk Insert Access from Dataset 【发布时间】:2013-02-06 18:24:06 【问题描述】:

我一直在关注以下代码 Bulk Insert 但是我在 AccesssRecordset.Update(); 要么 rs.Update();

它有两个参数 Int UpdateType 和 bool Force

public void BulkExportToAccess(DataTable dtOutData, String DBPath, String TableNm) 
 
DAO.DBEngine dbEngine = new DAO.DBEngine();
Boolean CheckFl = false;

try

    DAO.Database db = dbEngine.OpenDatabase(DBPath);
    DAO.Recordset AccesssRecordset = db.OpenRecordset(TableNm);
    DAO.Field[] AccesssFields = new DAO.Field[dtOutData.Rows.Count];

    //Loop on each row of dtOutData
    for (Int32 rowCounter = 0; rowCounter < dtOutData.Rows.Count; rowCounter++)
    
        AccesssRecordset.AddNew();
        //Loop on column
        for (Int32 colCounter = 0; colCounter < dtOutData.Columns.Count; colCounter++)
        
            // for the first time... setup the field name.
            if (!CheckFl)

          AccesssFields[colCounter] =                                               
          AccesssRecordset.Fields[dtOutData.Columns[colCounter].ColumnName];
            AccesssFields[colCounter].Value = dtOutData.Rows[rowCounter][colCounter];
        

        AccesssRecordset.Update();
        CheckFl = true;
    

    AccesssRecordset.Close();
    db.Close();

finally

    System.Runtime.InteropServices.Marshal.ReleaseComObject(dbEngine);
    dbEngine = null;
 
 

谁能帮忙

谢谢

【问题讨论】:

数据在传输到 MS Access 的途中来自哪里? 你能发布你的代码吗?链接上有很多代码,如果您可以发布相关代码并指出您遇到错误的位置会有所帮助 @Remou 我没听懂,但我会尝试解释 DsoutData 来自 Access,而 TableNm 是我的 Mdb 中的表的名称,希望对您有所帮助 您是在循环的第一次迭代中还是在后续迭代中遇到错误?您是否尝试过将 AccesssRecordset.Update(); 移到 for 循环的外部? 是的,我在第一次迭代时遇到错误。我还删除了必须插入的表中的所有行 【参考方案1】:

好的,所以OpenRecordset 创建了一个Recordset 对象。它正在寻找的UpdateType 来自UpdateTypeEnum;你可以只发送一个 1。就Force 而言,我认为在你的情况下你可能想发送true。这意味着如果有其他人更新了其中一条记录,他们的更改将不会被考虑并且可能会丢失,因为您的更新将是强制的。

【讨论】:

当我进入 AccesssRecordset.Update(1, true); 时我有 103 列和 7823 行我得到一个无效的参数错误 @Kyle,你确定这是错误发生的地方吗?这与您之前遇到的错误相同 - 有趣的是,这些参数实际上是可选 是的,我进行了调试,同时我得到了 Invalid Argument Error

以上是关于从数据集中批量插入访问的主要内容,如果未能解决你的问题,请参考以下文章

批量插入时操作系统错误代码 5(拒绝访问。)

mysql批量插入

批量插入数据

有没有办法从本地 Azure Blob 存储批量插入?

从 java 应用程序执行批量插入数据库的不同方法

MS SQL 批量更新\插入