自动截取相应的长度了, 因为数据保存到数据库之前for运行时根本没有可以限制为varchar(2)的代码.

解决方案 »

  1.   

    1)因为你的表里两个字段:au_id varchar(2), state varchar(2),长度均为2.2)用try...catch来抛出一个错误吧!
      

  2.   

    1,可能是你的表中的字段长度为2
    2,
    for (int i=98; i<=102; i++)
    {
      sqlDataAdapter1.InsertCommand.Parameters[0].Value = i.ToString();
      sqlDataAdapter1.InsertCommand.Parameters[1].Value = i.ToString();
    try
    {
      sqlDataAdapter1.InsertCommand.ExecuteNonQuery();
    }
    catch
    {
    contunue;
    }
    }
      

  3.   

    @au_id:在代码中将参数的长度定为2或者在数据库sql中将参数的长度定为2,都会自动截取相应长度的字符,除非比它长度短
      

  4.   

    如果你在数据库中长度为2的char字段中直接插入长度为3的字符串如‘aaa’肯定是不行的
      

  5.   

    1,因为这两个字段是字符型的当你插入大于2位的字符的时候,数据库会截去多余的字符。
    au_id varchar(2), state varchar(2),
    2,那就的做循环判断了,把错物的信息放到数组中去,在反馈给用户。正确的就执行插入。
      

  6.   

    把2002pine(在深圳真的很累)和 morefish(little) 的意见合一块,搂主的问题就搞定了
      

  7.   

    sqlDataAdapter1.InsertCommand.Parameters.Add(new SqlParameter("@a",SqlDbType.VarChar,2));sqlDataAdapter1.InsertCommand.Parameters["@a"].Value = i.ToString();试试。
      

  8.   

    1,可能是你的表中的字段长度为2
    2.你可以先进行数据验证将出错的row删除dr.delete(),这样往数据库中插的时候就不会把这错误的数据插进去了然后用下面的语句来获得出错的数据
    DataSet dataSetChanged =  myDataSet.GetChanges(DataRowState.Deleted);