public static void photo(DataTable zh)

        int count = 0;
        string strfields = "";
        string strvalues = "";
        string filed = "";
        string strvalue = "";        for (int i = 0; i < zh.Columns.Count; i++)
        {
            string strfiled = zh.Columns[i].ColumnName;
            strfields += strfiled + ",";
            strvalues += "@" + strfiled + ",";
        }
        if (strfields != "")
        {
            strfields = strfields.Substring(0, strfields.LastIndexOf(","));
            strvalues = strvalues.Substring(0, strvalues.LastIndexOf(","));
        }
        try
        {
            OracleConnection sqlconn = new OracleConnection(ConfigurationManager.AppSettings[connectdate.getconnect()]);
            sqlconn.Open();
            OracleDataAdapter da = new OracleDataAdapter();
            OracleCommand cmd = new OracleCommand();
            //建立InsertCommand
            da.InsertCommand = cmd;
            StringBuilder sb = new StringBuilder("");
            cmd.CommandText = sb.ToString();
            sb.Append("INSERT" + casemessage + ", " + strfields + " VALUES()");
            sb.Append(strvalues + ")");            //    OracleCommand cmd = new OracleCommand("insert into caseachieve(policycode,casenumber, C52, C225 , C223 , C145 , C176 , C96 , C179 , C178 , C177 , C180 , C181 , C123 , C99 , C248 , C144 , C146 , C211 , C36 , C150 , C148 , C149 , C254 , C251 , C228 , C226 , C232 , C67 , C117 , C113 , C242 , C156 , C244 , C255 , C243 , C218 , C219 , C165 , C162 , C161 , C163 , C160 , C166 , C105 , C95 , C217 , C106 , C246 , C157 , C158 , C159 , C245 , C241 , C240 , C238 , C239 , C94 , C118 ) values(:policycode,:casenumber, :C52, :C225 , :C223 , :C145 , :C176 , :C96 , :C179 , :C178 , :C177 , :C180 , :C181 , :C123 , :C99 , :C248 , :C144 , :C146 , :C211 , :C36 , :C150 , :C148 , :C149 , :C254 , :C251 , :C228 , :C226 , :C232 , :C67 , :C117 , :C113 , :C242 , :C156 , :C244 , :C255 , :C243 , :C218 , :C219 , :C165 , :C162 , :C161 , :C163 , :C160 , :C166 , :C105 , :C95 , :C217 , :C106 , :C246 , :C157 , :C158 , :C159 , :C245 , :C241 , :C240 , :C238 , :C239 , :C94 , :C118)", sqlconn);
            //    da.InsertCommand = cmd;
            for (int i = 0; i < zh.Columns.Count; i++)
            {
                filed = zh.Columns[i].ColumnName;
                strvalue = "@" + filed;
                OracleParameter oparam = new OracleParameter();
                oparam.ParameterName = strvalue;
               oparam.OracleType = DbTypeList[i];                oparam.SourceVersion = DataRowVersion.Current;
                oparam.SourceColumn = filed;
                da.InsertCommand.Parameters.Add(oparam);
            }
            count = da.Update(zh);
      
             OracleOperate con = new OracleOperate();
            //删除掉重复记录,在casemessage 表中当 casenumber 相同时则认为该数据重复......
            string sql = "delete from casemessage where tid not in (select min(tid)  from casemessage group by casenumber)";
           con.
          
           sqlconn.Close();
        }        catch (Exception ex)
        {
            count = 0;
        }
    
        return count;
    
       }

解决方案 »

  1.   

    //建立InsertCommand
      da.InsertCommand = cmd;
      StringBuilder sb = new StringBuilder("");
      cmd.CommandText = sb.ToString();
      sb.Append("INSERT" + casemessage + ", " + strfields + " VALUES()");
      sb.Append(strvalues + ")");
    sb.Append 报错 求改 错误为运算符“+”无法应用于string和方法组的类型的操作数
    求改    
      

  2.   

    //删除掉重复记录,在casemessage 表中当 casenumber 相同时则认为该数据重复......
      string sql = "delete from casemessage where tid not in (select min(tid) from casemessage group by casenumber)";
      con.
        
      sqlconn.Close();  此处  con.DataCom(sql);  补上。
      

  3.   

    5楼的大哥  你终于来了。
    就等你呢  
       excel表格数据 批量导入oracle数据库,并且删除重复的数据
    我写的这个肯定是不对的     只是我的一个构思,根据表里的字段  excel表格有模版不要担心 字段的原因
      

  4.   

    给楼主几点建议:
    1. 尽量明确说清楚自己的需求,你只给了一段没调试过代码,然后说想要把EXCEL的数据导入到数据库,想让大家帮你做什么呢?按你的思路把这段代码完成并调试通过吗?说实话,能有时间做你做这么多事情的人不多。把问题集中到关键点才是正确的提问方式,比如说你在完成思路时在哪个技术点上遇到的问题,让大家帮你看一下。2. 你的这段代码与ORACLE关系并不大,中是执行了两条动态拼接的insert与delete语句,将该贴转到.net版块更好一些。
      

  5.   

    sb.Append("INSERT into casemessage (" + strfields + ") VALUES (");
    sb.Append(strvalues + ")");
    insert 语句错误吧
      

  6.   

    设置一个变量,用for 循环来做,达到指定数量时做一个commit;