字段是text类型,是否能用setString ?(关于长文本插入数据库) 如果数据内容比较长的话,就会有问题。但程序也不报错,就是没把内容写到数据库里面。之前用varchar类型,就总是说超过8060大小。现在改用text,又有新问题了。关于长文本插入数据库,大家有比较好的解决方法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我试过不用setString,直接把参数嵌到sql语句里面,就一切正常了。但这样不安全啊。 也没有什么异常,就是数据库里面的那个text字段没有值。其它字段都已经正常更新了。 我猜这是由于你程序有的地方写错造成的,未必是不能插入text类型的字段里面。1 可能你的内容超过了String变量的范围。由于String超范围溢出了,那就存不入数据库中了。2还有,我在实践当中,发现如果表单的提交的数据过大,也提交不到下一个页面的,请你从这两方面着手去检查一下吧。 String变量的范围是多大呢?我做的也只是一般的论坛程序。如果不用setString,那可以用什么呢? 考虑一下,是不是你的表单的传送方法,设为get了, 或没有设默认为get,这样也会导致过长的字串问题, 改为post.其它我觉得不会有问题,数据库的字段长度,你应该设置的够了,要不会抛出异常的. 我的程序是这样的,请大家帮忙看一下有没有问题: 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(); 你试下能不能把 str 这个变量打印出来。不能的话代表已经超过字符串的长度了。 在MS SQLSERVER 中,一般长字符串,比如说文章之类的,都用 TEXT 数据类型 ,最大长度为 2^31 - 1 (2,147,483,647) 个字符,应该说够用了~,你的程序没有贴全吧?建议先打印出来,或者直接在数据库中通过查询分析器操作,看是否也有截断字符的现象~ 但为什么直接嵌到sql语句里面就可以呢? setBlob(int i, Blob x),setClob(int i, Clob x)可以了 只有包含main函数的类才能够继承么 xpath 解析有命名空间的属性 java基础问题 关于spring bean 作用范围 问:如果修改jar包的配置文件 求助!怎样安装LOG4J 问一个有挑战性的问题!(兼散100分!) 关于FileInputStream中的read() 给为老大请多帮忙呀~! 什么是annotation? MessageDigest.getInstance("MD5") 有几种参数? 怎样得到所需要的类型?
我做的也只是一般的论坛程序。如果不用setString,那可以用什么呢?
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();