2011-09-15 48 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