看看sql语句的返回值,出错的语句用查询分析器执行一下,看看是否为重复插入或其它错误返回0值。

解决方案 »

  1.   

    没看清吗?返回0值表示执行失败,而不抛异常。你catch个什么?
      

  2.   


       SqlCommand com = new SqlCommand();
                    string sql = string.Format("insert into UDS_DEPARTMENTFILE");
                    com.CommandText = sql + "(DEPARTMENTID, DOCUMENTID, DOCUMENTNAME, SAVEFILENAME, ADDTIME, UPBY, SUMMARY, CHECKED) values(@DEPARTMENTID, @DOCUMENTID, @DOCUMENTNAME, @SAVEFILENAME, @ADDTIME, @UPBY, @SUMMARY, @CHECKED)";                com.Parameters.AddWithValue("@DEPARTMENTID", departId);
                    com.Parameters.AddWithValue("@DOCUMENTID", fnumber);
                    com.Parameters.AddWithValue("@DOCUMENTNAME", filename);
                    com.Parameters.AddWithValue("@SAVEFILENAME", savefilename);
                    com.Parameters.AddWithValue("@ADDTIME", dateTime);
                    com.Parameters.AddWithValue("@UPBY", userName);
                    com.Parameters.AddWithValue("@SUMMARY", summary);
                    com.Parameters.AddWithValue("@CHECKED", "审核中");
                    db.ExecuteCmd(com);这个插入语句是没有错的吧 我现在都怀疑数据库有问题了
      

  3.   

    db.ExecuteCmd(com);
    你怎么知道每次都成功了?
      

  4.   

     不是成功了 是没有错的
      public bool ExecuteCmd(SqlCommand Cmd)
            {
                Cmd.Connection = m_connection;
                try
                {
                    Cmd.ExecuteNonQuery();
                    return true;
                }
                catch (System.Exception ex)
                {
                    CommMethods.CMethods.WriteErrorLog(ex.Message + "---获得ExecuteCmd在ProjectManagement");
                    return false;
                }
            }没有catch到错误 而且我把写不了的语句放到查询分析器里面执行是可以写入到数据库的
      

  5.   

    楼上已经说了,成功或者失败要通过ExecuteNonQuery的返回值来判断,catch不是用来干这个事的。
      

  6.   

    肯定是你在某些地方catch掉了。所以不报错!
      

  7.   

    哪位大侠看看我的帖子啊,我也是有两个数据没写进去
    http://topic.csdn.net/u/20120509/17/05b15b2d-3791-4422-bc91-ed0e4f8929cf.html
      

  8.   

    insert into 表名    
    你给表名后面加个空格
      

  9.   

    我觉得是insert 的时候主键重复了,结果就导至管理-->活动监视器里面出了很多阻塞,后来的就增加不进去了
      

  10.   

    打个断点跟一下呗,每次的SQL语句提出来单独执行一下看看。
      

  11.   

    是用的本地数据库吗?VS在调试时,可能会用项目目录下的库文件,替换掉bin\debug下的
      

  12.   

    int ret = db.ExecuteCmd(com);
    当ret=0时,说明Insert into语句插入失败,将这时失败的SQL语句放到查询分析器中执行。
      

  13.   

    可能是部分字段值有问题,长度、类型之类的,引发一些亚异常,会catch不到
      

  14.   

    不知道你解决了没?如果还没有给你提几条建议吧:
    1.先看看你的主键有没有冲突。可以把你的SQL语句放在查询分析器里面看一下是否能成功。
    2.用执行ExecuteNonQuery()的返回值来判断是否执行成功。返回0的话就是执行失败。
      

  15.   

    string sql = string.Format("insert into UDS_DEPARTMENTFILE");
       com.CommandText = sql + "(DEPARTMENTID, DOCUMENTID, DOCUMENTNAME, SAVEFILENAME, ADDTIME, UPBY, SUMMARY, CHECKED) values(@DEPARTMENTID, @DOCUMENTID, @DOCUMENTNAME, @SAVEFILENAME, @ADDTIME, @UPBY, @SUMMARY, @CHECKED)";
       把这个换一个方法试试呢
      

  16.   

    如果没有返回错误,最后请commit;
      

  17.   


    1.你没有判断是否插入成功,这个是通过cmd.ExecuteNonQuery()的返回值来判断的,0为没有插入成功,1为成功,你直接返回true是错的
    2.你其实是可以写成存储过程的,在里面加个事务来接收错误比较好
    3.你检查看看你的数据类型是否一致,并检查你的ID号是否是主键,又自动增长之类的
      

  18.   


    把语句放到查询分析器运行一下,可能是null的问题,插不进去
      

  19.   

    查看连结字符串,是否正确。如果Sql有错误会出异常的。
      

  20.   

    是不是你的数据库没在bin文件下的Debug文件夹下呢,如果没有的话虽然执行成功但是还是写不进去的,打开所有文件看看,如果没有就把数据库拷贝到里面就好了