`
iamlibo
  • 浏览: 68830 次
社区版块
存档分类
最新评论
阅读更多

Derby现在是apache的一个项目(http://db.apache.org/derby/index.html)。

写了一段简单的代码。以后在项目用到Derby的时候可以查一下。

    public static void main(String[] args) {

        try {

            // Class.forName("com.ibm.db2.jcc.DB2Driver");

            // String url =

            // "jdbc:derby:net://localhost:1527/address:user=libo;password=iamlibo;create=true:retrieveMessagesFromServerOnGetMessage=true;";

            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

            System.out.println("load driver success");

            String url = "jdbc:derby:/ddd;create=true;upgrade=true;";

            Connection con = DriverManager.getConnection(url);

            System.out.println("con is " + con);

            Statement stmt = con.createStatement();

            String sql ="SELECT * FROM app.groups";

            System.out.println(sql);

            ResultSet rs = stmt.executeQuery(sql);

            while (rs.next()) {

                System.out.print(rs.getInt(1) + ", ");

                System.out.println(rs.getString(2));

            }

            rs.close();

            stmt.close();

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

这段代码很简单,只是建立一个连接,如果有表的就可以查询出来数据,但这里没有建立表。

参考了下面一篇:http://www.java3z.com/cwbwebhome/article/article2/1101.html?id=1152

这个例子是一个最小限度的JDBC 应用程序。 关于这个程序:

  • 以内嵌式模式(缺省的)或作为一个服务器环境中的客户端运行,这依赖于传递给程序的参数
  • 如果运行在内嵌式模式,则启动Derby 引擎
  • 如果运行在客户端模式,则连接到 Derby 网络服务器
  • 创建并连接到数据库
  • 创建一个表
  • 插入数据
  • 更新数据
  • 查询数据
  • 删除表
  • 关闭连接
  • 如果运行在内嵌式模式,则关闭 Derby。

以下是源码:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

/*

 * @author janet

 */

public class SimpleApp

{

    /* 缺省的模式是内嵌式的*/

    public String framework = "embedded";

    public String driver = "org.apache.derby.jdbc.EmbeddedDriver";

    public String protocol = "jdbc:derby:";

    public static void main(String[] args)

    {

        new SimpleApp().go(args);

    }

    void go(String[] args)

    {

        /* 处理参数,确定这个程序作为内嵌式使用还是作为客户端使用*/

        parseArguments(args);

        System.out.println("SimpleApp starting in " + framework + " mode.");

        try

        {

            /*

               装载驱动程序,如果是内嵌式模式,这将启动Derby, 因为它还没有运行.

             */

            Class.forName(driver).newInstance();

            System.out.println("Loaded the appropriate driver.");

            Connection conn = null;

            Properties props = new Properties();

            props.put("user", "user1");

            props.put("password", "user1");

            //create=true将创建数据库derbyDB

            conn = DriverManager.getConnection(protocol +"derbyDB;create=true", props);

            System.out.println("Connected to and created database derbyDB");

            conn.setAutoCommit(false);//设置自动提交模式

            Statement s = conn.createStatement();

            /*

               创建一个表,加入几条记录并更新一条.

             */

            s.execute("create table derbyDB(num int, addr varchar(40))");

            System.out.println("Created table derbyDB");

            s.execute("insert into derbyDB values (1956,'Webster St.')");

            System.out.println("Inserted 1956 Webster");

            s.execute("insert into derbyDB values (1910,'Union St.')");

            System.out.println("Inserted 1910 Union");

            s.execute(

                "update derbyDB set num=180, addr='Grand Ave.' where num=1956");

            System.out.println("Updated 1956 Webster to 180 Grand");

            s.execute(

                "update derbyDB set num=300, addr='Lakeshore Ave.' where num=180");

            System.out.println("Updated 180 Grand to 300 Lakeshore");

            /*

               查询并校验结果.

             */

            ResultSet rs = s.executeQuery(

                    "SELECT num, addr FROM derbyDB ORDER BY num");

            if (!rs.next())

            {

                throw new Exception("Wrong number of rows");

            }

            if (rs.getInt(1) != 300)

            {

                throw new Exception("Wrong row returned");

            }

            if (!rs.next())

            {

                throw new Exception("Wrong number of rows");

            }

            if (rs.getInt(1) != 1910)

            {

                throw new Exception("Wrong row returned");

            }

            if (rs.next())

            {

                throw new Exception("Wrong number of rows");

            }

            System.out.println("Verified the rows");

            s.execute("drop table derbyDB");//删除表

            System.out.println("Dropped table derbyDB");

 

            rs.close();

            s.close();

            System.out.println("Closed result set and statement");

            conn.commit();

            conn.close();

            System.out.println("Committed transaction and closed connection");

 

            boolean gotSQLExc = false;

            if (framework.equals("embedded"))

            {

                try

                {

                    DriverManager.getConnection("jdbc:derby:;shutdown=true");//关闭数据库服务

                }

                catch (SQLException se)

                {

                    gotSQLExc = true;

                }

                if (!gotSQLExc)

                {

                    System.out.println("Database did not shut down normally");

                }

                else

                {

                    System.out.println("Database shut down normally");

                }

            }

        }

        catch (Throwable e)

        {

            System.out.println("exception thrown:");

            if (e instanceof SQLException)

            {

                printSQLError((SQLException) e);

            }

            else

            {

                e.printStackTrace();

            }

        }

        System.out.println("SimpleApp finished");

    }

    static void printSQLError(SQLException e)

    {

        while (e != null)

        {

            System.out.println(e.toString());

            e = e.getNextException();

        }

    }

    private void parseArguments(String[] args)

    {


				
// System.setProperty("derby.system.home", "c:\\DBdata");//这样可以设置数据库数据的存放目录

int length = args.length;

        for (int index = 0; index < length; index++)

        {

            if (args[index].equalsIgnoreCase("jccjdbcclient"))

            {

                framework = "jccjdbc";

                driver = "com.ibm.db2.jcc.DB2Driver";

                protocol = "jdbc:derby:net://localhost:1527/";

            }

            if (args[index].equalsIgnoreCase("derbyclient"))

            {

                framework = "derbyclient";

                driver = "org.apache.derby.jdbc.ClientDriver";

                protocol = "jdbc:derby://localhost:1527/";

            }

        }

    }

}

下面是如何运行这个程序:

一、怎样在内嵌式环境(集成到桌面应用)中运行这个例子

我的工作目录是c:\java,先将derby.jar复制到c:\java\jar下。再写一个批处理文件run.bat,内容如下:

set CLASSPATH=c:\java\jar\derby.jar;%CLASSPATH%

打开windows XP的命令行窗口,转入工作目录。运行:


C:\java>run.bat
C:\java>set CLASSPATH=c:\java\jar\derby.jar;
C:\java>javac SimpleApp.java

C:\java>java SimpleApp
SimpleApp starting in embedded mode.
Loaded the appropriate driver.
Connected to and created database derbyDB
Created table derbyDB
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table derbyDB
Closed result set and statement
Committed transaction and closed connection
Database shut down normally
SimpleApp finished

程序运行后将在当前目录下生成

  • derbyDB (目录)
    这个目录构成了 derbyDB 数据库目录. 你不能修改这个目录中的任何文件。
  • derbyDB\log (目录)
    这个目录保存了数据库的事务日志.
  • derbyDB\seg0 (目录)
    这个目录保存了数据库derbyDB的数据
  • derbyDB\service.properties
    一个内部文件,保存了一些配置参数
  • derby.LOG
    日志文件

二、 怎样在服务器环境中运行这个例子

(1)启动Derby Network Server

将derbynet.jar复制到c:\java\jar中,run.bat文件改为:
set CLASSPATH=c:\java\jar\derby.jar;c:\java\jar\derbynet.jar;%CLASSPATH%

新开一个DOS命令行窗口,在这个窗口中启动 Derby Network Server,如:

C:\java>run.bat

C:\java>set CLASSPATH=c:\java\jar\derby.jar;c:\java\jar\derbynet.jar;

C:\java>java org.apache.derby.drda.NetworkServerControl start
服务器准备在端口 1527 上接受连接。

(2)用 Derby 客户端模式运行这个程序:

将 derbyclient.jar 复制到c:\java\jar中,run.bat文件改为:
set CLASSPATH=c:\java\jar\derbyclient.jar;%CLASSPATH%

新开一个DOS命令行窗口,然后以Derby 客户端模式启动SimpleApp

C:\java>run.bat
C:\java>set CLASSPATH=c:\java\jar\derbyclient.jar;

C:\java>java SimpleApp derbyclient
SimpleApp starting in derbyclient mode.
Loaded the appropriate driver.
Connected to and created database derbyDB
Created table derbyDB
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table derbyDB
Closed result set and statement
Committed transaction and closed connection
SimpleApp finished

(3)使用 IBM DB2 JDBC Universal Driver运行这个例子

      在Derby的10.0版本, IBM DB2 JDBC Universal Driver 是Derby Network Server唯一的客户端驱动.驱动程序需要从 IBM的站点下载 (IBM DB2 JDBC Universal Driver, for Apache Derby Network Server). 从10.1开始, Derby网络客户端驱动程序与Derby一起分发,并且是被推荐的客户端驱动程序,但 DB2 Universal Driver还被支持并且可以象下面一样被使用:

下载 db2jcc.jar和 db2jcc_license_c.jar,放到c:\java\jar目录下,run.bat的内容改为:
set CLASSPATH=c:\java\jar\db2jcc.jar;c:\java\jar\db2jcc_license_c.jar;%CLASSPATH%

C:\java>run.bat

C:\java>set CLASSPATH=c:\java\jar\db2jcc.jar;c:\java\jar\db2jcc_license_c.jarr;

c:\java>java SimpleApp jccjdbcclient

A successful run produces the following output:
SimpleApp starting in jccjdbc mode.
Loaded the appropriate driver.
Connected to and created database derbyDB
Created table derbyDB
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table derbyDB
Closed result set and statement
Committed transaction and closed connection
SimpleApp finished

分享到:
评论

相关推荐

    derby-examples, Derby框架的示例应用程序.zip

    derby-examples, Derby框架的示例应用程序 Derby框架使得编写实时的协作应用程序变得很容易,在 node.js 和浏览器中运行。请参见 http://derbyjs.com/示例聊天http://chat.derbyjs.com/lobby简单的聊天演示请注意,...

    MyEclipse Derby是什么.txt

    4. **教育和学习:**由于其简单易用的特点,Derby也被广泛应用于教学和学习场景,帮助学生快速上手数据库相关知识。 #### 六、总结 Derby作为Apache Software Foundation下的一个开源项目,不仅继承了Cloudscape的...

    用 Apache Derby 进行开发 —— 取得节节胜利

    由于其完全用Java编写,Derby能无缝集成到Java应用栈中,无论是在桌面、服务器还是云环境,都具有很好的兼容性。 对于新接触数据库开发的用户,Apache Derby提供了一个理想的起点。它的安装过程相对简单,只需下载...

    eclipse derby的配置

    在嵌入式模式下,数据库引擎与应用程序在同一JVM中运行,数据库的启动和关闭与应用同步,只需引入derby.jar。而在网络服务器模式下,Derby作为一个独立的服务,可以处理不同JVM或非Java环境的应用请求,这时需要...

    Eclipse插件Derby安装 Derby插件开发

    假设我们想要开发一个简单的 Derby 数据库连接插件,主要实现以下功能: - **连接 Derby 数据库**:提供用户界面,让用户输入数据库连接信息,包括主机地址、端口、数据库名称等。 - **执行 SQL 查询**:提供一个 ...

    Derby安装,创建数据库,在JAVA程序中使用Derby

    Derby是一种嵌入式数据库,可以轻松地嵌入到Java应用程序中。在本教程中,我们将学习如何安装Derby、创建数据库、在Java程序中使用Derby。 安装Derby 首先,我们需要下载并安装Derby。可以从Apache官方网站下载...

    derby安装配置与使用

    Derby被设计成轻量级、易于使用,适合于小型应用程序和开发人员。以下是对Derby安装配置与使用的详细介绍: 1. **下载与安装**: 访问Apache Derby的官方网站(http://db.apache.org/derby/derby_downloads.html)...

    derby10.10.1.1数据库

    开发者可以通过简单的命令行工具创建数据库、表,执行SQL语句,并且可以方便地集成到Java应用中。然而,对于大规模的生产环境,Derby可能不是最佳选择,因为它的扩展性和性能可能无法满足高并发和大数据量的需求。 ...

    derby指南

    5. **简单配置**:在内嵌模式下,使用Derby只需将JAR文件加入到应用的classpath,然后通过嵌入式JDBC驱动进行数据库操作。 **安装与下载**: Apache Derby可以从官方网站(http://db.apache.org/derby)获取。对于...

    derby数据库

    这对于开发简单应用或者进行快速原型开发非常方便。 4. **网络模式**:除了嵌入式模式,Derby还支持网络模式,可以作为独立的服务器运行,允许多个客户端连接并进行并发操作。这种模式适用于需要多用户访问数据库的...

    spring3+hibernate3+derby的实例

    Derby简单易用,适合小型到中型的应用,尤其是那些基于Java的项目。由于其小巧的体积和无需额外服务器进程的特性,Derby常被用于开发环境和快速原型设计。 **Spring与Hibernate整合** Spring和Hibernate的整合能...

    myeclipse本地方式连接Derby

    其中,Apache Derby作为一个轻量级、开源的关系型数据库管理系统,因其易于部署、管理简单等特性,在小型项目或测试环境中尤为受欢迎。本文将深入探讨如何通过MyEclipse采用本地方式连接Derby数据库,这一过程不仅...

    Node.js-Derby-MVC框架使其易于编写实时协作的能运行在Node.js和浏览器中的应用程序

    Derby 提供的工具和API使得构建实时、协作应用变得更加简单。 **学习资源** 如果你想要深入学习 Derby 框架,可以从以下方面入手: 1. 官方文档:了解框架的基本概念和用法,以及如何安装和设置开发环境。 2. ...

    用Apache Derby、Apache MyFaces和Facelets开发应用程序

    学习如何使用 Apache Derby、Apache MyFaces 和 ...本文中示例应用程序使用了 Model-View-Controller (MVC) 架构,用来说明 MyFaces 组件的强大功能以及使用 Apache Derby 和最新视图技术 Facelets 进行开发的简单性。

Global site tag (gtag.js) - Google Analytics