你的新  行 内容 
是否 符合 sql 里面的字段设置
有没有空 字段 
看看 表里 的字段 容许为 空不!
直接在sql 里面执行 你的 插入语句 看有没有错!

解决方案 »

  1.   

    多贴两句嘛
    我们怎么知道GetUpdateCommand是什么
    CustomerData.CUSTOMERS_TABLE又是什么?
      

  2.   

    private SqlCommand GetUpdateCommand()
    {
    if ( UpdateCommand == null )
    {
    UpdateCommand=new SqlCommand("updateCustomer",new SqlConnection(appConfig.GetConnectString()));UpdateCommand.CommandType=CommandType.StoredProcedure;//添加参数信息
    SqlParameterCollection SqlParams = UpdateCommand.Parameters;SqlParams.Add(new SqlParameter ID_PARM,SqlDbType.Int,CustomerData.ID_FIELD_LENGTH));  
              
    SqlParams.Add(new SqlParameter(USERNAME_PARM, SqlDbType.NVarChar,CustomerData.USERNAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PASSWORD_PARM, SqlDbType.NVarChar , CustomerData.PASSWORD_FIELD_LENGTH));SqlParams.Add(new SqlParameter(NAME_PARM, SqlDbType.NVarChar , CustomerData.NAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(EMAIL_PARM, SqlDbType.NVarChar , CustomerData.EMAIL_FIELD_LENGTH));SqlParams.Add(new SqlParameter(SEX_PARM, SqlDbType.NVarChar, CustomerData.SEX_FIELD_LENGTH));SqlParams.Add(new SqlParameter(BIRTHDAY_PARM, SqlDbType.DateTime ,CustomerData.BIRTHDAY_FIELD_LENGTH));SqlParams.Add(new SqlParameter(ADDRESS_PARM, SqlDbType.NVarChar , CustomerData.ADDRESS_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PHONE_PARM, SqlDbType.NVarChar , CustomerData.PHONE_FIELD_LENGTH));



    //将参数映射到数据表SqlParams[ID_PARM].SourceColumn=CustomerData.ID_FIELD;SqlParams[ID_PARM].SourceVersion=DataRowVersion.Original;

    SqlParams[USERNAME_PARM].SourceColumn=CustomerData.USERNAME_FIELD;SqlParams[USERNAME_PARM].SourceVersion=DataRowVersion.Original;SqlParams[PASSWORD_PARM].SourceColumn = CustomerData.PASSWORD_FIELD;SqlParams[NAME_PARM].SourceColumn = CustomerData.NAME_FIELD; SqlParams[EMAIL_PARM].SourceColumn = CustomerData.EMAIL_FIELD;SqlParams[SEX_PARM].SourceColumn = CustomerData.SEX_FIELD;SqlParams[BIRTHDAY_PARM].SourceColumn = CustomerData.BIRTHDAY_FIELD;
    SqlParams[ADDRESS_PARM].SourceColumn = CustomerData.ADDRESS_FIELD;
    SqlParams[PHONE_PARM].SourceColumn = CustomerData.PHONE_FIELD;

    }
              
    return UpdateCommand;
    }
      

  3.   

    SQL语句用的是存储过程,存储过程语法没问题,语句也没错,没有空的参数引用。
    在查询分析器上执行更新命令(参数替换成数据)结果正确。
      

  4.   

    是否在其它地方对该Dataset插入了新行。
      

  5.   

    实际上楼主的问题很简单啊,程序执行没有错误,是概念理解上的偏差!楼主自己也说是更新具有新行的datarow,既然添加了新行,那么调用dsCommand的update命令,当然会去执行其中的insert命令拉!!!!
    添加了新行,对应数据库更新的话,就是执行insert命令啊,所以程序没有问题.楼主做相应的调整即可;
    而楼主总是在设置dsCommand的UpdateCommand属性,这只能执行更新操作,即修改了某一行的数据;另外还要增加一个commandbuilder类的实例,更新才会起作用