如果数据内容比较长的话,就会有问题。但程序也不报错,就是没把内容写到数据库里面。之前用varchar类型,就总是说超过8060大小。现在改用text,又有新问题了。
关于长文本插入数据库,大家有比较好的解决方法吗?

解决方案 »

  1.   

    我试过不用setString,直接把参数嵌到sql语句里面,就一切正常了。但这样不安全啊。
      

  2.   

    也没有什么异常,就是数据库里面的那个text字段没有值。其它字段都已经正常更新了。
      

  3.   

    我猜这是由于你程序有的地方写错造成的,未必是不能插入text类型的字段里面。1 可能你的内容超过了String变量的范围。由于String超范围溢出了,那就存不入数据库中了。2还有,我在实践当中,发现如果表单的提交的数据过大,也提交不到下一个页面的,请你从这两方面着手去检查一下吧。
      

  4.   

    String变量的范围是多大呢?
    我做的也只是一般的论坛程序。如果不用setString,那可以用什么呢?
      

  5.   

    考虑一下,是不是你的表单的传送方法,设为get了, 或没有设默认为get,这样也会导致过长的字串问题, 改为post.其它我觉得不会有问题,数据库的字段长度,你应该设置的够了,要不会抛出异常的.
      

  6.   

    我的程序是这样的,请大家帮忙看一下有没有问题:         GetCon data = new GetCon();
             Connection ConnRecordset1 = data.GetConnection();
             int i=0;
             PreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement(SqlStr,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
             StatementRecordset1.setFetchSize(0);
             StatementRecordset1.setQueryTimeout(0);
             if (!Parameter.equals(""))
             {
                 StringTokenizer str=new StringTokenizer(Parameter,"%+%");//拆开几个不同的参数
                 for (i=1;str.hasMoreTokens();i++)
                 {
                     StatementRecordset1.setString(i,str.nextToken());
                 }//System.out.println(Parameter);System.out.println(i);
             }
             i=StatementRecordset1.executeUpdate();
             StatementRecordset1.close();
             ConnRecordset1.close();
      

  7.   

    你试下能不能把 str 这个变量打印出来。不能的话代表已经超过字符串的长度了。
      

  8.   

    在MS SQLSERVER 中,一般长字符串,比如说文章之类的,都用 TEXT 数据类型 ,最大长度为 2^31 - 1 (2,147,483,647) 个字符,应该说够用了~,你的程序没有贴全吧?建议先打印出来,或者直接在数据库中通过查询分析器操作,看是否也有截断字符的现象~
      

  9.   

    但为什么直接嵌到sql语句里面就可以呢?
      

  10.   

    setBlob(int i, Blob x),setClob(int i, Clob x)可以了