C#从数据集插入表中

时间:2011-09-15 18:40:10

标签: c# sql

这是正确的编码方式吗???工作100% 很好..但我如何缩短一些以使它看起来很好......

如何检查条件.....如果“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);




                    }

2 个答案:

答案 0 :(得分:3)

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

类似的东西:

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


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

答案 1 :(得分:0)

将最后一行代码更改为:

 cmdInsert.ExecuteNonQuery();

这应该可以解决问题