解决方案 »

  1.   

    调试下
     trans.Commit();
    这里可能丢出异常,但是t已经是1了。
      

  2.   

    说明事务没有提交成功,在事务环境下,ExecuteNonQuery()返回为1并不代表数据就添加进数据表了,也就是说ExecuteNonQuery()返回1并且trans.Commit();成功,数据才会写进数据表
      

  3.   

            for (int ii = 1; ii < ds.Tables[0].Rows.Count; ii++)
                        {  //对datatable循环      
                            
                       
                            sql = " INSERT TempExcel ( barcode , unitPrice , storeNumber , productName ) VALUES ( '" + dr[ii]["条  码"].ToString() + "','" + dr[ii]["销售单价"].ToString() + "','" + dr[ii]["库存数量"].ToString() + "','" + dr[ii]["品   名"].ToString() + "')";
    //某一行的数据
                            com.CommandText = sql;
                            t = com.ExecuteNonQuery();
                            
                        }
    你这写了一个对datatable循环,你确定只有一条循环就结束了?如果没结束的话显然事务是没有提交的,没有提交就没有任何记录
      

  4.   

    是不是进入catch了,如果是,在里面打印下异常信息。
      

  5.   

    谢谢大家,问题解决了,发现原来是更新的字符类型不匹配 sqlStr += "barcode   numeric(18)  primary key,";与
    sql = " INSERT TempExcel ( barcode , unitPrice , storeNumber , productName ) VALUES ( '" + dr[ii]["条  码"].ToString() ,请问能有方法把插入的这些转成数字类型么 dr[ii]["条  码"].ToString() + "','" + dr[ii]["销售单价"].ToString() + "','" + dr[ii]["库存数量"].ToString() ?
      

  6.   

    VALUES ( '" + dr[ii]["条  码"].ToString() + "'
    两头的单引号去掉
    VALUES ( " + dr[ii]["条  码"].ToString()