请教如何通过DataSet高效批量的插入数据到Oracle数据量超大的多表DataSet 通过WebService 传到服务器端,然后循环插入到数据库中。
表结构都一样。
我现在采用insert into ....  ....... values (........)方式插入。速度慢的吓人。请高人指点迷津,如何提速???

解决方案 »

  1.   

    用OracleDataAdapter应该可以,不过不知道能提高多少。 OracleDataAdapter da=new OracleDataAdapter();
    OracleCommand cmd=new OracleCommand("insert into EVENTLOG_PRINT(ETYPE,WTIME,GTIME,ESOURCE,ECATEGORY,E_DESCR,EUSER,EMACHINE) values(:ETYPE,:WTIME,:GTIME,:ESOURCE,:ECATEGORY,:E_DESCR,:EUSER,:EMACHINE)",conn);
    da.InsertCommand=cmd;

    OracleParameter ETYPE=da.InsertCommand.Parameters.Add(new OracleParameter(":ETYPE",OracleType.NVarChar,1000));
    OracleParameter WTIME=da.InsertCommand.Parameters.Add(new OracleParameter(":WTIME",OracleType.DateTime));
    OracleParameter GTIME=da.InsertCommand.Parameters.Add(new OracleParameter(":GTIME",OracleType.DateTime));
    OracleParameter ESOURCE=da.InsertCommand.Parameters.Add(new OracleParameter(":ESOURCE",OracleType.NVarChar,1000));
    OracleParameter ECATEGORY=da.InsertCommand.Parameters.Add(new OracleParameter(":ECATEGORY",OracleType.NVarChar,1000));
    OracleParameter E_DESCR=da.InsertCommand.Parameters.Add(new OracleParameter(":E_DESCR",OracleType.NVarChar,4000));
    OracleParameter EUSER=da.InsertCommand.Parameters.Add(new OracleParameter(":EUSER",OracleType.NVarChar,1000));
    OracleParameter EMACHINE=da.InsertCommand.Parameters.Add(new OracleParameter(":EMACHINE",OracleType.NVarChar,1000)); ETYPE.SourceColumn=dt.Columns[0].ColumnName;
    WTIME.SourceColumn=dt.Columns[1].ColumnName;
    GTIME.SourceColumn=dt.Columns[2].ColumnName;
    ESOURCE.SourceColumn=dt.Columns[3].ColumnName;
    ECATEGORY.SourceColumn=dt.Columns[4].ColumnName;
    E_DESCR.SourceColumn=dt.Columns[5].ColumnName;
    EUSER.SourceColumn=dt.Columns[6].ColumnName;
    EMACHINE.SourceColumn=dt.Columns[7].ColumnName; da.Update(dt);