JDBC连接OpenOffice.org中的Base数据库

转载 2007年09月21日 19:20:00
 自从用了Ubuntu就不再想跑到Windows下面去了。可是编程的时候还是要用到数据库,出了mysql首选之外,装了OOo的也可以利用Base这个现成的数据库来管理自己的资料,因为它同样支持JDBC连接。所以开始我们的OOo Base JDBC之旅吧。

一、当然是确保安装了OOo了,如果没有的话,可以自己下载自行安装
   详情见:http://forum.ubuntu.org.cn/viewtopic.php?t=76127 或者到官方网站www.openoffice.org
二、下载驱动程序 hsqldb
    下载地址:http://sourceforge.net/project/showfiles.php?group_id=23316
三、把下载好的驱动程序解压,找到hsqldb/lib下面的hsqldb.jar拷贝到JAVA_HOME/jre/lib/ext,比如我的就是:/opt/jdk1.6.0_02/jre/lib/ext
四、新建数据库了
    打开OOo中的Base数据库,根据向导建立一个数据库,然后建立一个自己的表person.里面有两项内容name、sex.如图:

五,编程连接数据库
   (http://digiassn.blogspot.com/2006/07/java-creating-jdbc-connection-to.html)
    Thanks!
import org.hsqldb.jdbcDriver;
import java.sql.*;
import java.util.zip.*;
import java.io.*;
import java.util.*;

public class OooData
...{
public static void main(String[] args) ...{

try ...{
Class.forName(
"org.hsqldb.jdbcDriver");
}

catch(Exception x) ...{
System.out.println(
"Unable to load the driver class!");
}



Connection con 
= null//Database objects

Statement com 
= null;
ResultSet rec 
= null;
ZipFile file 
= null//For handling zip files

ZipEntry ent 
= null;
Enumeration en 
= null//For the entries in the zip file

BufferedOutputStream out 
= null//For the output from the zip class

InputStream in 
= null//for reading buffers from the zip file

File f 
= null//Used to get a temporary file name, not actually used for anything

int len; //General length counter for loops

List v 
= new ArrayList(); //Stores list of unzipped file for deletion at end of program


//Unzip zip file, via info from

//http://www.devx.com/getHelpOn/10MinuteSolution/20447


try ...{
//Open the zip file that holds the OO.Org Base file

file 
= new ZipFile("/home/liceven/Data.odb");

//Create a generic temp file. I only need to get the filename from

//the tempfile to prefix the extracted files for OO Base

= File.createTempFile("ooTempDatabase""tmp");
f.deleteOnExit();

//Get file entries from the zipfile and loop through all of them

en 
= file.entries();

while (en.hasMoreElements()) ...{

//Get the current element

ent 
= (ZipEntry)en.nextElement();

//If the file is in the database directory, extract it to our

//temp folder using the temp filename above as a prefix


if (ent.getName().startsWith("database/")) ...{

System.out.println(
"Extracting File: " + ent.getName());
byte[] buffer = new byte[1024];

//Create an input stream file the file entry

in 
= file.getInputStream(ent);

//Create a output stream to write out the entry to, using the

//temp filename created above


out 
= new BufferedOutputStream(new FileOutputStream("/tmp/" + f.getName() + "." + ent.getName().substring(9)));

//Add the newly created temp file to the tempfile vector for deleting

//later on

v.add(
"/tmp/" + f.getName() + "." + ent.getName().substring(9));

//Read the input file into the buffer, then write out to

//the output file

while((len = in.read(buffer)) >= 0)
out.write(buffer, 
0, len);

//close both the input stream and the output stream

out.close();
in.close();
}

}


//Close the zip file since the temp files have been created

file.close();

//Create our JDBC connection based on the temp filename used above


try ...{
con 
= DriverManager.getConnection("jdbc:hsqldb:file:/tmp/" + f.getName(), "SA""");
}

catch (SQLException x) ...{
System.out.println(
"Couldn't get connection!");
}



//Create a command object and execute, storing the results in the rec object

com 
= con.createStatement();
rec 
= com.executeQuery("select * from "person"");

//GO through the resultset, and output the results

while (rec.next())
System.out.println(
" Name: " + rec.getString("name"+ " sex: " + rec.getString("sex"));

//Close all the database objects

rec.close();
com.close();
con.close();

//Delete the temporary files, which file names are stored in the v vector

for (len = 0; len < v.size(); len++)
(
new File((String)v.get(len))).delete();
}

catch (Exception e) ...{
e.printStackTrace();
}

}

}

代码中一些文件置放的位置以及数据库表的名字,请根据自己的情况修改。
六、执行结果:
Extracting File: database/script
Extracting File: database/backup
Extracting File: database/log
Extracting File: database/properties
Extracting File: database/data
 Name: Kate sex: Female
 Name: Spence sex: Male
 Name: Yaokee sex: Male
七、如果有什么问题,可以留言跟我讨论。

OpenOffice.org_Base資料庫

  • 2012年03月14日 13:04
  • 2.67MB
  • 下载

Java JDBC下执行SQL的不同方式、参数化预编译防御 相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51

Java JDBC下执行SQL的不同方式、参数化预编译防御 相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lav...

利用OpenOffice.org工具实现预览效果

第一:在官网下载OpenOffice.org这个工具  第二:编码,本人附上实际开发中用到的编码  创建连接 也就是和工具创建连接public static XComponentContext c...
  • ylovep
  • ylovep
  • 2012年01月30日 17:19
  • 1853

仿百度文库方案[openoffice.org 3+swftools+flexpaper](五) 之 转换pdf的同时,进一步转为swf

作者:焱龙 出处:http://star-studio.cnblogs.com/ 申明:作者写博是为了总结经验,和以后的工作参考之用。 如需转载,请尽量保留此申明,并在文章页面明显位置给...

仿百度文库方案[openoffice.org 3+swftools+flexpaper](一) 之 tomcat6.0+jdk1.6环境配置

本方案是笔者在网络上收集前人智慧,以及辛苦奋斗探索几周完成的成果。 由于网络上,大部分资料、文章都比较零碎、重复、不够全面。寻找全面系统的介绍该方案的资料实属不易。 本文从一个只会net、...
  • GS_MY
  • GS_MY
  • 2013年07月22日 11:30
  • 897

安装openoffice.org

第二步,安装openoffice.org      openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行。 主要模块有w...

OpenOffice.org宏学习笔记

  • 2013年06月20日 23:10
  • 2.14MB
  • 下载

OpenOffice.org Forum

  • 2013年06月25日 12:35
  • 1.04MB
  • 下载

Openoffice.org calc常用操作函数集锦

转载:http://blog.csdn.net/kdzxiaoli/article/details/4274351 /****************************************...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDBC连接OpenOffice.org中的Base数据库
举报原因:
原因补充:

(最多只允许输入30个字)