易截截图软件、单文件、免安装、纯绿色、仅160KB

使用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(


相关文档:

Java GUI JLabel 和 JPanel 图片 和组件重叠问题

package ui;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
impor ......

JAVA和JSP之间的关系

我现在给你一个JAVA和JSP之间的关系,以及JAVA的完整认识
JAVA分为J2EE,J2SE.J2ME,下面分别介绍:
一.J2EE:Java 2 Platform Enterprise Edition 企业版,用于企业应用,支持分布式部署。 
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,
它对开发基于Web的多层应用提供了功能上的支持。它包 ......

JAVA Object[]数组转化问题

最近遇到了一个问题,就是在用到List.toArray 方法时,返回Object[]数组,直接把它强转成其他类型的会报错:
   code:  ArrayList list=getList();
             String[] s=(String[])list.toArray();
   except ......

java小知识

(1)Java中的主方法public static void main(String args[])为什么要用static来修饰
因为java是完全面向对象语言,这个主函数其实是一个类的方法,这个方法在类没有生成对象的时候就必须被JVM调用,所以它必须是静态的成员函数.
 (2)java语言中的public static void main(String[] args) 作用是什么.所做的事情又是什 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号