使用Java Web对Access数据库的备注字段操作问题
近期有个小CMS项目,由于服务器、人员以及管理制度等一系列问题,不得不采用Java Web+Access这种不伦不类的组合进行开发,期间遇到了一个小问题,那就是文章内容采用Access的“备注”类型存取时,发生自动截断的问题。也就是说,存进去10000字的文章,只能显示出3000字。经过查找资料和实验,发现这个问题是PreparedStatement的setter()和getter()方法使用不当造成的。
官方资料显示,Access的“备注”字段的字符个数,若通过用户界面输入则最大为65,535;若以编程方式输入时则可支持1G字节的字符存储。所以不存在数据库字段类型选择错误的问题。那么只有在存取的过程中找问题了。
Java的String类型忘了究竟能存放多少个字符了(10的16次方?),总之也不是String类型的错误。因此,就将问题定位在了处理数据库存放的setter()和getter()方法上了。经查,setString()方法能存的值取决于该参数相对于驱动程序在 VARCHAR
值上的限制的大小。Google了一下,网上提供了各种方法,试了试clob的方式,发现Access似乎不支持clob,因此我决定试一试字符流的方式进行存取。经过试验,终于成功,现将代码提供如下:
一、使用setCharacterStream()向Access数据库中存放数据
//content为String型的文章内容
java.io.Reader clobReader = new java.io.StringReader(content);
pStatement.setCharacterStream(4, clobReader, content.length());
二、将字节流方法封装起来
public class UtilTools {
/*
* 在access数据库中,将Memo备注型字段里的数据完整取出
* @param InputStream
* @return StringBuilder
*/
public StringBuilder accessdbMemoToString(InputStream in)
{
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
StringBuilder sb=new StringBuilder();
String line=null;
try {
while((line=reader.readLine())!=null){
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb;
}
三、调用二中的方法,实现从Access数据库中完整取数据
//db为相应的POJO对象,"content"为字段名称,rs为ResultSet对象
UtilTools ut = new UtilTools();
db.setContent(
相关文档:
转自:http://hi.baidu.com/wqj403/blog/item/149957345cd6a11891ef3976.html
用java怎么提取或是解压rar压缩文档?以前查了很多的资料,没有找到相关的第三方库,网上查找的资料说是解析rar只能更加rar的命令行参数来解析。因为rar压缩文档的内部结构是没有共开的。所以没有专门的解析库程序。自己也就只好用命令行了,但 ......
第1章
Java基础
1.1 Java的历史和基本原理
1.2 Java字节码
1.3 Java术语
1.4 &nbs ......
采用欲扬先抑的手法谈谈java:
java没有指针只有引用是最大的败笔.正因为没有指针,很多操作要迂回婉转;垃圾收集机制也觉得是鸡肋,写个析构函数真的那么复杂吗, 有必要牺牲灵活性吗;函数调用的代价之高让人抓狂
但我还是选择了她:
java的纯面向对象特 ......
Bean Serializable Interface 的接口让BEAN可以串行化,将其变成一个可保存为以后使用的二进制流。当一个BEAN被系列化到磁盘上或者其他任何地方,其状态被保存起来,其中的属性值也不会改变。在BEAN的规范中,JSP并没有要求BEAN实现Serializable接口。但是,如果您希望自己控制您所创建的组件的serialization进程,或者您想 ......
Java Learning Path (一)、工具篇
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外 ......