2011-09-15 51 views
1

表这是编码...的正确方法?它的工作100% 罚款..但我怎么缩短一些,以便它看起来不错....C#插入到来自数据集

以及如何检查条件,.....如果“REGID已经是 目前在表它不应该添加栏应该更新 列....

if (DSDBMax.Tables[0].Rows.Count > 0) 
{ 


     for (int i = 0; i < DSDBMax.Tables[0].Rows.Count; i++) 
     { 
       DataAccess.Command cmdInsert = new Oca.DataAccess.Command(); 
       cmdInsert.CommandType = System.Data.CommandType.Text; 
       cmdInsert.CommandString = "INSERT INTO STATUS (RigID,RigName,GroundDistance,DrillingSupervisor,DrillingEngineer,GeoSteering,Directional,MudCompany,OHLogs,JobIDRec,County,Area,WellName,Slot_Conductor,SurfaceLegalLocation,LocationType,State_Province,SurfaceLocation_Slot,Field,ReserveCategory,JOA,Well_Type,Land_Expiration,WI,NRI,Drilling_Permit,Unit_AlternateApproval,AFE,c_CALLS,c_STKD,c_WL,c_PLAT,c_DP,c_GP,c_DRILLPROG,c_SIMOPS,c_LOC,c_PMT,c_UNITAPP,c_AFE,c_TITLE) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
       //DataSet DsInsert = DataAccess.GetDataSet(dCorpID, cmdInsert); 
       // DataAccess.ExecuteNonQuery(dCorpID, cmdInsert); 
       cmdInsert.AddParameter("RigID",DSDBMax.Tables[0].Rows[i][0].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("RigName",DSDBMax.Tables[0].Rows[i][1].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("GroundDistance",DSDBMax.Tables[0].Rows[i][2].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("DrillingSupervisor",DSDBMax.Tables[0].Rows[i][3].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("DrillingEngineer", DSDBMax.Tables[0].Rows[i][4].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("GeoSteering", DSDBMax.Tables[0].Rows[i][5].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("Directional", DSDBMax.Tables[0].Rows[i][6].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("MudCompany", DSDBMax.Tables[0].Rows[i][7].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("OHLogs", DSDBMax.Tables[0].Rows[i][8].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("JobIDRec", DSDBMax.Tables[0].Rows[i][9].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("County", DSDBMax.Tables[0].Rows[i][10].ToString(), ParameterDirection.Input); 
       cmdInsert.AddParameter("Area", DSDBMax.Tables[0].Rows[i][11].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("WellName", DSDBMax.Tables[0].Rows[i][12].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("Slot_Conductor", DSDBMax.Tables[0].Rows[i][13].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("SurfaceLegalLocation", DSDBMax.Tables[0].Rows[i][14].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("LocationType", DSDBMax.Tables[0].Rows[i][15].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("State_Province", DSDBMax.Tables[0].Rows[i][16].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("SurfaceLocation_Slot", DSDBMax.Tables[0].Rows[i][17].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("Field", DSDBMax.Tables[0].Rows[i][18].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("ReserveCategory", DSDBMax.Tables[0].Rows[i][19].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("JOA", DSDBMax.Tables[0].Rows[i][20].ToString(), ParameterDirection.Input);         
        cmdInsert.AddParameter("Well_Type", DSDBMax.Tables[0].Rows[i][21].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("Land_Expiration", DSDBMax.Tables[0].Rows[i][22].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("WI", DSDBMax.Tables[0].Rows[i][23].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("NRI", DSDBMax.Tables[0].Rows[i][24].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("Drilling_Permit", DSDBMax.Tables[0].Rows[i][25].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("Unit_AlternateApproval", DSDBMax.Tables[0].Rows[i][26].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("AFE", DSDBMax.Tables[0].Rows[i][27].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_CALLS", DSDBMax.Tables[0].Rows[i][28].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_STKD", DSDBMax.Tables[0].Rows[i][29].ToString(), ParameterDirection.Input); 
         cmdInsert.AddParameter("c_WL", DSDBMax.Tables[0].Rows[i][30].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_PLAT", DSDBMax.Tables[0].Rows[i][31].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_DP", DSDBMax.Tables[0].Rows[i][32].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_GP", DSDBMax.Tables[0].Rows[i][33].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_DRILLPROG", DSDBMax.Tables[0].Rows[i][34].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_SIMOPS", DSDBMax.Tables[0].Rows[i][35].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_LOC", DSDBMax.Tables[0].Rows[i][36].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_PMT", DSDBMax.Tables[0].Rows[i][37].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_UNITAPP", DSDBMax.Tables[0].Rows[i][38].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_AFE", DSDBMax.Tables[0].Rows[i][39].ToString(), ParameterDirection.Input); 
        cmdInsert.AddParameter("c_TITLE", DSDBMax.Tables[0].Rows[i][40].ToString(), ParameterDirection.Input); 

        DataAccess.ExecuteNonQuery(dCorpID, cmdInsert); 




        } 
+0

贵的问题解决了吗? – SeanVDH

回答

3

,如果我是你,我会用SqlBulkCopy的()和列映射。

喜欢的东西:

using (SqlBulkCopy copy = new SqlBulkCopy(
    { 
       copy.ColumnMappings.Add("dtcolumnname", "sqlcolumnname"); 


     copy.DestinationTableName = "TABLE"; 
     copy.WriteToServer(table); 
    } 
+0

在这种情况下copy.ColumnMappings.Add(“dtcolumnname”,“sqlcolumnname”);会来(我的节目)41次(右)..? – Rocky111

+0

这取决于。如果您在数据表中具有与SQL表中相同的布局,则根本不需要执行任何列映射。否则,你必须指定。 – SeanVDH

+0

我的来源和目的地表格完全一样..我该怎么做..? – Rocky111

0

更改代码的最后一行:

cmdInsert.ExecuteNonQuery(); 

这应该做的伎俩

+1

他的代码已经工作 - 他要求一个更简单的方法来做到这一点 – SeanVDH