我现在使用本地Access数据库,批量插入数据时,如果循环用insert ... into ... 语句,很慢,三万条数据需要一分半钟,网上有人说使用rs.addnew比用insert快。求助!Addnew方法怎么使用?希望能给个简单完整的例子说明下,谢谢

解决方案 »

  1.   

    Addnew是ado里面的 不是ado.net
    sql ="select *  from tab"
    rs.open sql,conn,3,3
    rs.addnew
    rs("user")="小男"
    rs("pass")="333333"
    rs.update 
      

  2.   

    谢谢 net_lover ,虽然不是很详细,不过我还是实现这个功能了,源代码贴出来(例子)        public bool WriteToDataBase_Addnew(string str_TableName, DataTable dt, out string str_info)
            {
                string sAccessConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;  Data source=" + SystemConfig.DataBasePath;
                ADODB.Connection conn = new Connection();
                ADODB.Recordset rs = new Recordset();
                try
                {
                    conn.Open(sAccessConnection, "", "", 0);
                    rs.Open(str_TableName, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, (int)ADODB.CommandTypeEnum.adCmdTable);
                    object missing = System.Reflection.Missing.Value;
                    //
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        rs.AddNew(missing, missing);
                        rs.Fields["id"].Value = dt.Rows[i]["id"];
                        rs.Fields["name"].Value = dt.Rows[i]["name"];
                        rs.Update(missing, missing);
                    }
                    //
                    str_info = "";
                    rs.Close();
                    conn.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    str_info = ex.Message;
                    return false;
                }
            }
      

  3.   

    经过测试发现,使用rs.Addnew插入三万条数据,只需要35秒左右,比之前使用insert的一分半钟省了将近2/3时间