提交表单数据是出现该错误怎么修改 
错误的信息是----------java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]将截断字符串或二进制数据
user表:create table users(
userid bigint primary key identity,
username varchar(30) not null unique,
truename varchar(30) not null,
passwd varchar(30) not null,
email varchar(40) not null,
phone varchar(20) not null,
address varchar(50) not null,
postcode char(6) not null,
grade int default 1
) String sql = "update users set truename='"+truename+"',address='"+address+
"',phone='"+phone+"',email='"+email+"',postcode="+postcode+" where userid="+id; jsp页面修改用户信息,比如用户的真实姓名truename是:“张小三”,改为“张三”,则报错:
java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]将截断字符串或二进制数据
为什么?

解决方案 »

  1.   

     String sql = "update users set truename='"+truename+"',address='"+address+
                "',phone='"+phone+"',email='"+email+"',postcode="+postcode+" where userid="+id; 其中某个参数值 超过了数据库中定义的长度
    另外postcode 也是字符串 为啥没用单引号呢
    建议 用 System.out 输出 sql 的值,马上可以看出原因
      

  2.   

    看看你数据库truename字段定义的长度,是不是超过大小了
      

  3.   

    查看一下编码格式,都改为utf8试试。应该是乱码问题。
      

  4.   

    一般在控制台上出现问题都很好解决,不出问题的问题最难解决了额,你把错误往google上黏贴,一般都会有的额
      

  5.   

    有几个人看错了.楼主说的是:
    比如用户的真实姓名truename是:“张小三”,改为“张三”,则报错从大改为小.一定不是长度问题,差不多是编码问题,你可以先试试英文.
    还有怎么写SQL会被注入的.性能也不好.
      

  6.   

    postcode也改成varchar,统一不好吗
      

  7.   

    恩啊,修改后写到数据库里是乱码,然后再读出来显示到jsp页面也是乱码,如果是英文则不报错,我正想问的,怎么改啊,谢谢啊
      

  8.   

    恩啊,修改后写到数据库里是乱码,然后再读出来显示到jsp页面也是乱码,如果是英文则不报错,我正想问的,怎么改啊,谢谢啊