`
icess
  • 浏览: 253353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习使用Java DataBase (Derby) -- 嵌入式数据库

阅读更多

 

学习使用Java DataBase

在前几天,转贴了java网站上一篇介绍使用Java DB的文章,http://blog.matrix.org.cn/page/icess?entry=using_java_db_in_desktop 里面介绍了如何在桌面程序中使用java DB,今天使用了一下感觉很不错.

但上面那篇文章中,是通过一个桌面程序来介绍java DB的,看的时候可能会感到比较混乱,今天我就按照他的例子,从中拿出 介绍java db的代码, 来看看如何使用它吧!

在看如何使用java db以前,先看看java db 是什么, 有什么特点.

 

What's Java DB?

要使用Java DB, 就不免想问起什么是java db, 其实java db就是在ibm 捐赠给Apache开源项目组的一个用java实现的轻量级嵌入式数据库代码基础上发展起来的. sun Java DB主页的描述如下:

 

Java DB is Sun's supported distribution of the open source Apache Derby 100% Java technology database. It is fully transactional, secure, easy-to-use, standards-based -- SQL, JDBC API, and Java EE -- yet small, only 2MB. The Apache Derby project has a strong and growing community that includes developers from large companies such as Sun Microsystems and IBM as well as individual contributors.

Apache Derby 项目主页:http://db.apache.org/derby/

Java DB主页: http://developers.sun.com/prodtech/javadb/

Java DB 的特性以及优点:

Features & Benefits
 
Sun Java DB is based on the open source Apache Derby project. It provides a full-featured, robust, small-footprint Java database management system that is cost effective and simple to deploy.

 
Pure Java
Java DB is written in Java to take advantage of Java's write once, run anywhere promise. Java DB supports J2SE, J2EE and J2ME standards.

 
Standards- based
Java DB technology adheres to database standards such as JDBC and ANSI SQL standards. This means Java DB provides the functionality expected of a sophisticated relational database, including SQL syntax, transaction management, concurrency, triggers, and backups. It also means that it is easy to upgrade an application using Java DB to other standards-based databases, such as Oracle and DB2.

 
Easy to use
Java DB is easy to use and requires zero-administration. This eliminates the need for a database administrator.

 
Application-embedded or client-server mode
The flexibility to support both embedded and client-server mode allows Java DB to adapt to diverse deployment scenarios. In embedded mode, Java DB runs on the same JVM as the application and users may not even be aware that they are accessing a relational database.

 
Secure
Java DB provides a numbers of security mechanisms including database file encryption, authentication through either external LDAP directory or built-in repository, and authorization. In addition, access to the database can also be controlled at read-only or read-write level.

 
Sophisticated – with triggers and stored procedures
Java DB allows users to define trigger to ensure referential integrity. It also supports Java stored procedures.

 
Small foot-print
With a foot-print of 2MB, Java DB is a perfect fit for desktop applications, mobile solutions and small devices that require a full featured, robust database.

 
Cost-effective
Java DB is available for free under the Apache license and requires no administration if embedded and little if used in client-server mode.

 
Full support from Sun
Sun offers full, 24 x 7 support for Java DB.

可以看出Java DB的优点还是很多的.以后在sun 的软件中都带有Java DB了.

下面来看看如何使用Java  DB吧.

嵌入式数据库和一般的数据库不同,在使用以前,需要指定一个存放数据的目录和指定数据库的配置文件.

配置文件可以很简单:不用解释了 如下:

# Sample ResourceBundle properties file

user=

addressuser

password=

addressuser

derby.driver=

org.apache.derby.jdbc.EmbeddedDriver

derby.url=

jdbc:derby:

db.table=

ADDRESS

db.schema=

APP

当然了 以上配置信息,也可以用一个Property 属性对象来构造,然后在得到数据库连接的时候把该对象传递进去也是可以的. 不过使用配置文件是为了方便修改相关配置信息而设定的.

通过如下方法来设置 数据库数据的存放目录:

private void setDBSystemDir() {
        // decide on the db system directory
        //String userHomeDir = System.getProperty("user.home", ".");
        String userHomeDir = System.getProperty("user.dir", ".");
        String systemDir = userHomeDir + "/.addressbook";
        System.setProperty("derby.system.home", systemDir);
        
        // create the db system directory
        File fileSystemDir = new File(systemDir);
        fileSystemDir.mkdir();
 }

然后就是加载数据库驱动了, Java DB的数据库驱动是集成在一起的,也是通过 Class.forName() 的方式加载的,内嵌的驱动名字是org.apache.derby.jdbc.EmbeddedDriver 本例子中使用下面的方法加载驱动.
 

    private void loadDatabaseDriver(String driverName) {
        // load Derby driver
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        
    }

这样,加载了驱动以后,只有得到Connection就可以操作数据了.

在操作数据以前,我们先建立一个 数据表, 使用的sql 语句如下:

    private static final String strCreateAddressTable =
            "create table APP.ADDRESS (" +
            "    ID          INTEGER NOT NULL PRIMARY KEY GENERATED 

             ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," +
            "    LASTNAME    VARCHAR(30), " +
            "    FIRSTNAME   VARCHAR(30), " +
            "    MIDDLENAME  VARCHAR(30), " +
            "    PHONE       VARCHAR(20), " +
            "    EMAIL       VARCHAR(30), " +
            "    ADDRESS1    VARCHAR(30), " +
            "    ADDRESS2    VARCHAR(30), " +
            "    CITY        VARCHAR(30), " +
            "    STATE       VARCHAR(30), " +
            "    POSTALCODE  VARCHAR(20), " +
            "    COUNTRY     VARCHAR(30) " +
            ")";

然后使用如下方法来建立数据库和数据表:

    private boolean createTables(Connection dbConnection) {
        boolean bCreatedTables = false;
        Statement statement = null;
        try {
            statement = dbConnection.createStatement();
            // 创建表格...
            statement.execute(strCreateAddressTable);
            bCreatedTables = true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
        return bCreatedTables;
    }
    private boolean createDatabase() {
        boolean bCreated = false;
        Connection dbConnection = null;
        
        String dbUrl = getDatabaseUrl();
        dbProperties.put("create", "true");
        
        try {
            dbConnection = DriverManager.getConnection(dbUrl, dbProperties);
            bCreated = createTables(dbConnection);
        } catch (SQLException ex) {
        }
        dbProperties.remove("create");
        return bCreated;
    }

由于是嵌入式数据库,创建表格也要编程来实现,当然也有和IDE配合使用的插件可以使用.

在创建数据库和表时, 需要指定 一个create 属性为true, 就象上面的那样, 同样,在断开连接 关闭数据库时,我们也要指定属性 用编程的方法来关闭数据库, 这是和普通数据库不同的地方. 下面是关闭数据库的代码:

    public void disconnect() {
        if(isConnected) {
            String dbUrl = getDatabaseUrl();
            dbProperties.put("shutdown", "true");
            try {
                DriverManager.getConnection(dbUrl, dbProperties);
            } catch (SQLException ex) {
            }
            isConnected = false;
        }
    }

然后我们就可以通过得到Connection 象操作普通数据库一样来操作Java DB了. 如下:

dbConnection = DriverManager.getConnection(dbUrl, dbProperties);
stmtSaveNewRecord = dbConnection.prepareStatement(strSaveAddress, Statement.RETURN_GENERATED_KEYS);

 

性能如何呢: 经过我的测试 插入 100 行(每行有11个字符串) 数据 要2100 多毫秒. 取出100 行需要 1500多毫秒 不知道大家认为如何.

本文用到的全部代码: 可以在此出下载:  http://icess.my.china.com/downloads/index.htm 

分享到:
评论

相关推荐

    db-derby-10.11

    使用Java Derby时,开发者可以通过JDBC(Java Database Connectivity)接口进行数据库操作。例如,创建数据库只需一行代码`DatabaseConnection.getConnection("jdbc:derby:myDB;create=true")`。此外,Derby支持...

    db-derby-10.11.1.1-bin.zip

    3. **嵌入式和服务器模式**:Derby可以作为嵌入式数据库在应用程序内部运行,也可以作为一个独立的服务提供给多个客户端连接。这种灵活性使得它在多种场景下都能发挥作用。 4. **SQL支持**:Derby完全符合SQL:2003...

    连接derby数据库方法—附图

    Derby数据库是一种嵌入式关系数据库管理系统,可以嵌入到Java应用程序中,提供了一个轻量级、可靠的数据库解决方案。 连接Derby数据库方法 1. 使用Database模式 在Eclipse中,可以使用Database模式来连接Derby...

    基于嵌入式开源数据库Derby实现信息服务平台

    《基于嵌入式开源数据库Derby实现信息服务平台》这篇文章探讨了如何通过使用开源的嵌入式数据库Derby和Java技术来构建一个高效的信息服务平台。该平台具有简单的配置、跨平台兼容性和高度可移植性的特点。 #### 二...

    derby-10.4.2.0

    Apache Derby,也被称为Java DB,是由Apache软件基金会开发的一个开源、免费的嵌入式数据库管理系统。它是完全用Java语言编写,因此具备跨平台兼容性,可以在任何支持Java的环境中运行。"derby-10.4.2.0" 标题表明这...

    java derby数据库详解

    Java Derby数据库是一个轻量级、完全用Java语言编写的开源数据库管理系统,被集成在Java SE 6(代号Mustang)中,为...通过学习和掌握Derby,开发者能够更好地利用Java 6的数据库编程新特性,提高开发效率和代码质量。

    Derby数据库初级使用文档

    通过上述步骤,初学者能够成功安装、配置、创建并连接Derby数据库,为进一步学习和使用Derby数据库奠定了基础。在实际应用中,还应了解如何创建表、插入数据、更新和删除数据,以及查询语言SQL的相关知识,以便更好...

    Java Diary - JDK自带的java数据库

    Derby是一个嵌入式数据库,这意味着它可以直接在应用程序中运行,无需额外的服务器进程。这对于小型应用或者测试环境来说非常理想,因为它减少了部署的复杂性。Derby支持SQL标准,包括SQL92和部分SQL:2003,使得与...

    derby 数据库 使用的例子

    Derby被设计为嵌入式数据库,适用于Java应用程序,尤其在桌面应用、测试环境以及小型服务器场景中非常实用。这个压缩包文件"DERBY_PJ"可能包含了关于如何使用Derby数据库的实例和教程。 首先,让我们了解Derby的...

    Derby使用ij工具操作数据库

    它被设计为嵌入式数据库,适合于Java应用程序。Derby基于Java语言,因此它完全兼容JDBC(Java Database Connectivity),这使得它在Java开发环境中特别方便。 `ij`是Derby自带的一个交互式的SQL命令行工具,用于...

    derby数据库

    3. **嵌入式数据库**:Derby可以被直接嵌入到Java应用程序中,作为一个类库运行,无需独立服务器进程。这对于开发简单应用或者进行快速原型开发非常方便。 4. **网络模式**:除了嵌入式模式,Derby还支持网络模式,...

    Java嵌入式数据库程序的开发.zip

    Derby是Apache软件基金会的一个项目,它是一个完全开源的Java数据库,可以作为嵌入式数据库使用。Derby基于Java,因此与Java应用程序的集成非常紧密,它还支持标准的JDBC和SQL。 **HSQLDB** HyperSQL Database...

    Java嵌入式数据库H2学习大全

    ### Java嵌入式数据库H2学习大全 #### H2数据库简介与特性 H2是一款功能强大的开源嵌入式数据库系统,完全用Java语言编写。它以其高性能、易用性和广泛的兼容性著称,在开发测试环境及小型应用项目中非常受欢迎。 ...

    JAVA编写的图书管理系统(derby数据库)

    Java编写的图书管理系统是一款基于Derby数据库的家庭用图书管理软件,是学习和实践Java数据库连接(JDBC)技术的一个典型示例。这个项目不仅适用于个人家庭管理私人图书收藏,也适用于小型图书馆或阅读爱好者,方便...

    Java嵌入式数据库程序的开发.pdf

    文档中提到的Derby和SQLite是两种广泛使用的嵌入式数据库。Derby,又称JavaDB,是一个开源的关系型数据库管理系统,支持标准SQL语句,并且能够轻松地与Java程序集成。它采用了Java平台,使得其能够跨平台使用,具有...

    derby 小型数据库 jar

    这个"derby小型数据库 jar"标题暗示了我们正在讨论的是Derby数据库的Java Archive (JAR) 文件,通常用于在Java应用中嵌入式使用数据库。 Derby数据库的特点包括轻量级、小巧高效,非常适合于学习、开发、测试和小型...

    商品出入库例子+derby数据库

    在IT行业中,数据库管理系统是核心组成部分之一,而Apache Derby是一个轻量级、嵌入式的Java关系型数据库,常用于小型应用程序或开发环境中。本项目"商品出入库例子+derby数据库"提供了一个实用的示例,展示了如何在...

    db-derby.rar_derby_derby java

    Apache Derby是一款开源的关系型数据库管理系统,它是Java编写并且完全符合JDBC(Java Database Connectivity)标准的。在Java开发环境中,Derby常被用作轻量级数据库解决方案,尤其适用于嵌入式系统或者测试环境。 ...

Global site tag (gtag.js) - Google Analytics