Derby数据库 

JDK6笔记(1)----Derby数据库

1)JDK6包含了一个轻量级的数据库,称为Derby,它属于Apache数据库项目的产品。Derby是基于事务型的关系数据库,在磁盘上占用空间极少。
2)Derby被缺省安装到“安装目录/db”,包含了核心库,示范程序和一个数据库例子。其基本大小仅为2MB。
3)Derby数据库的管理极其简单,它加速了开发和部署的过程,因为其数据库存储是放在JAR文件中的,通过JAR包就发布了。
4)Derby随着JDK6的安装而自动安装。Derby提供了一个命令行工具称为ij,它是交互式JDBC脚本工具的缩写(interactive JDBC scripting tool)。此工具提供了一种方式连接和操纵数据库。
5)要使用Derby,必须在CLASSPATH中包含这个工具,如下:

c:/Program Files/Java/jdk1.6.0/db/derby.jar
c:/Program Files/Java/jdk1.6.0/db/derbytools.jar


在derby.jar文件中包含由JDBC驱动;在derbytools.jar中包含由ij工具。
6)在完成CLASSPATH配置后,要运行ij工具并连接数据库例子,如下:

c:/>java org.apache.derby.tools.ij
ij version 10.2
ij>connect 'jdbc:derby:c:/Program Files/Java/jdk1.6.0/db/demo/databases/toursdb';
ij>


注意:最后的分号不能省略。
7)建立新数据库,如下:

ij>disconnect;  //必须先断开已有数据库的连接
ij>connection 'jdbc:derby:MyDB;create=true';  //必须用创建参数create=true


如上,建立了名为MyDB的数据库。
8)如下的例子,建立数据库,建立表,插入数据,并且浏览它。

ij>create table zipcodes(zipcode varchar(5), city varchar(20), state varchar(2));
0 rows inserted/updated/deleted
ij>insert into zipcodes values('22030','Fairfax','VA');
1 rows inserted/updated/deleted
ij>insert into zipcodes values('22003','Annandale','VA');
1 rows inserted/updated/deleted
ij>insert into zipcodes values('90210','Beverly Hills','CA');
1 rows inserted/updated/deleted
ij>select * from zipcodes;
......


9)Derby中每个数据库的日志记录保存在其下的一个文件中,不管是否有多人对其进行操作。
10)最后以一个例子来结束本题。
用ij执行下面的语句:

connect 'jdbc:derby://localhost:1527/myDB;create=true;user=sa;password=sa';
create table restaurants(id integer, name varchar(20), city varchar(50));
insert into restaurants values (1, 'Irifunes', 'San Mateo');
insert into restaurants values (2, 'Estradas', 'Daly City');
insert into restaurants values (3, 'Prime Rib House', 'San Francisco');
产生一个myDB的数据库和表restaurants;
再用一个java应用程序实现对其的操作:
package myApp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DerbyTest { public static void main(String[] args) {
  DerbyTest testClient=new DerbyTest();
  testClient.showZipCodes();
 }
 public void showZipCodes(){
  try{
   String driver="org.apache.derby.jdbc.EmbeddedDriver";
   Class.forName(driver).newInstance();
   Connection conn=null;
   conn=DriverManager.getConnection("jdbc:derby://localhost:1527/myDB;user=sa;password=sa");
   Statement s=conn.createStatement();
   ResultSet rs=s.executeQuery("SELECT * FROM restaurants");
   while(rs.next()){
    System.out.println("序号    :"+rs.getInt(1));
    System.out.println("名字    :"+rs.getString(2));
    System.out.println("城市    :"+rs.getString(3));
    System.out.println();
   }
   rs.close();
   s.close();
   conn.close();
  }catch(Exception e){
   System.out.println("Exception: "+e);
   e.printStackTrace();
  }
 }}