表Scholarship如下
学号 varchar 10
学期号 varchar 5
班级号 varchar 10
奖学金类型 varchar 20
我写如下语句  
 sql.Add('insert into Scholarship(学号,学期号,奖学金类型,班级号) values(''');
 sql.Add(CheckListBox1.Items[index]+''','''+xqh2.Text+''','''+lx2.Text+''','''+bjh2.Text+''')');showmessage显示的是insert into Scholarship(学号,学期号,奖学金类型,班级号) values('060012057','0801','院级三好学生','0602') 
我将显示的这个语句放入查询分析器里可以正常执行。
可是在程序里执行时提示说将截断字符串或二进制
我就很纳闷!
然后我试着把数据库里的学号字段长度改为了20 就可以正常插入了。但是为什么呢??060012057明明才9位啊

解决方案 »

  1.   

    trim(CheckListBox1.Items[index])这样看看,有没有空格
      

  2.   

    '院级三好学生'
    班级号 varchar 10,你上面的值如果能正确插进去才是有鬼了。在D7里,上面的值应该占用了varchar(12)才对,一个汉字是占两个字节
      

  3.   

    可是在程序里执行时提示说将截断字符串或二进制的意思是,要插入的记录,与字段定义的长度不符。顶一楼。将其他字段值也加上trim。
      

  4.   

    这问题其实没什么,就是有空格,或者数据库字段设置的太短。所以在写插入的时候尽量trim一下。一切就ok了。
      

  5.   

    呃,我写的'院级三好学生'是奖学金类型,怎么会对应到班级号里呢。。她对应的数据库里的列是 :奖学金类型 varchar 20 正确的。
      

  6.   

    加了trim也没用,还是一样的问题。而且我没见trim的时候特地用length试了一下 长度就是9
    大家,是不是我的sql server坏了?。
      

  7.   

    用Sql Profiler跟踪一下语句