开发者社区> 风月无边> 正文

JDK6的新特性之八:嵌入式数据库Derby

简介: Derby并不是一个新的数据库产品,它是由IBM捐献给Apache的DB项目的一个纯Java数据库,JDK6.0里面带的这个Derby的版本是10.2.1.7,支持存储过程和触发器;有两种运行模式,一种是作为嵌入式数据库,另一种是作为网络数据库,前者的数据库服务器和客户端都在同一个JVM里面运行,后者允许数据库服务器端和客户端不在同一个JVM里面,而且允许这两者在不同的物理机器上.值得注意
+关注继续查看

Derby并不是一个新的数据库产品,它是由IBM捐献给Apache的DB项目的一个纯Java数据库,JDK6.0里面带的这个Derby的版本是10.2.1.7,支持存储过程和触发器;有两种运行模式,一种是作为嵌入式数据库,另一种是作为网络数据库,前者的数据库服务器和客户端都在同一个JVM里面运行,后者允许数据库服务器端和客户端不在同一个JVM里面,而且允许这两者在不同的物理机器上.值得注意的是JDK6里面的这个Derby支持JDK6的新特性JDBC 4.0规范(JSR 221),现在我们如果要练习JDBC的用法,没有必要单独装一个数据库产品了,直接用Derby就行.安装完JDK6.0后,Derby会被安装到<JDK6_HOME>/db下面,在<JDK6_HOME>/db/demo/programs下面还有一些示例程序,演示了如何启动,连接Derby数据库以及JDBC API的使用.下面分两种情况演示一下如何用代码操作Derby数据库,一种是嵌入式数据库,一种是网络数据库.

一.嵌入式数据库

public class EmbeddedDerbyTester ...{
    
public static void main(String[] args) ...{
        String driver 
= "org.apache.derby.jdbc.EmbeddedDriver";//在derby.jar里面
        String dbName="EmbeddedDB";
        String dbURL 
= "jdbc:derby:"+dbName+";create=true";//create=true表示当数据库不存在时就创建它
        try ...{           
            Class.forName(driver);
            Connection conn 
= DriverManager.getConnection(dbURL);//启动嵌入式数据库
            Statement st = conn.createStatement();
            st.execute(
"create table foo (FOOID INT NOT NULL,FOONAME VARCHAR(30) NOT NULL)");//创建foo表
            st.executeUpdate("insert into foo(FOOID,FOONAME) values (1,'chinajash')");//插入一条数据
            ResultSet rs = st.executeQuery("select * from foo");//读取刚插入的数据
            while(rs.next())...{
                
int id = rs.getInt(1);
                String name 
= rs.getString(2);
                System.out.println(
"id="+id+";name="+name);
            }

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

    }

}

 

运行上面程序后,会在当前目录生成名为EmbeddedDB的文件夹,既是EmbeddedDB数据库的数据文件存放的地方,控制台将输出

id=1;name=chinajash

二.网络数据库

public class NetworkServerDerbyTester ...{
    
public static void main(String[] args) ...{
        String driver 
= "org.apache.derby.jdbc.ClientDriver";//在derbyclient.jar里面
        String dbName="NetworkDB";
        String connectionURL 
= "jdbc:derby://localhost:1527/" + dbName + ";create=true";
        
try ...{
            
/**//*
             创建Derby网络服务器,默认端口是1527,也可以通过运行
             <Derby_Home> rameworksNetworkServer

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
轻量级开源嵌入式关系数据库sqlite基本使用及接口初识
preface,先闲来扯下蛋: 嵌入式数据库,NoSQL的是BerkeleyDB和InnoDB,leveDb、TC(个人较不熟悉),关系型嵌入式是SQLite; 服务器性质的NoSQL服务器,如Redis、MongoDB等; 完全免费开放,开源的数据库,PostgreSQL(个人感觉很可以) ...
1063 0
将execel表格的数据导入到mysql数据库
在开发中经常会将现成的execel表格导入到数据库里,否则一个个字段插入填写,太浪费时间,效率很低。本文主要是讲如果将execel表格导入到mysql数据库,希望对各位有所帮助。
1026 0
[20121108]关于克隆数据库的问题.txt
[20121108]关于克隆数据库的问题.txt前几天在克隆数据库生产系统数据库时,遇到一个非常奇怪的问题,记录一下:克隆的机器口令文件,以及spfile以前都存在,实际上很简单,先停止旧数据库,然后改安装目录名(害怕还要使用!),再安装数据库:startup ...
698 0
[20130106]整和数据库--修改字符集.txt
[20130106]整和数据库--修改字符集.txt工作需要,需要把几个数据库合并在一起,由于以前数据库使用的字符集是AMERICAN_AMERICA.US7ASCII,而现在的数据库使用SIMPLIFIED CHINESE_CHINA.ZHS16GBK,整合的时候需要修改字符集,统一到字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
660 0
[20170111]设置无需口令登录数据库2.txt
[20170111]设置无需口令登录数据库2.txt --//上午测试无需口令登录数据库,这样连接数据库使用sqlplus /@book ,这样实际上通过网络连接数据库,哪怕是在本机也是这样。
804 0
+关注
风月无边
java,架构方面专家
367
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载