`
给一理由先
  • 浏览: 24384 次
  • 性别: Icon_minigender_1
  • 来自: 衡阳
文章分类
社区版块
存档分类
最新评论

【转】什么是javaDB

阅读更多
javaDB其实就是Derby,它并不是一个新的数据库产品,它是由IBM捐献给Apache的DB项目的一个纯Java数据库,JDK6.0里面带的这个Derby的版本是 10.2.1.7,支持存储过程和触发器;有两种运行模式,一种是作为嵌入式数据库,另一种是作为网络数据库,前者的数据库服务器和客户端都在同一个 JVM里面运行,后者允许数据库服务器端和客户端不在同一个JVM里面,而且允许这两者在不同的物理机器上.值得注意的是JDK6里面的这个Derby支持JDK6的新特性JDBC 4.0规范(JSR 221),现在我们如果要练习JDBC的用法,没有必要单独装一个数据库产品了,直接用Derby就行.

1、本身没有操作界面,可以用第三方工具来管理(也就是你说的操作界面),Aqua Data Studio 具备管理功能的用于 Apache Derby 关系数据库的管理工具和数据库查询工具。直观管理功能让用户能够浏览和修改数据库结构,包括架构对象和数据库存储,以及维护数据库安全。集成查询工具让您能够迅速创建、编辑和执行 SQL 查询与脚本。Aqua Data Studio 进一步提供导入与导出工具,从而轻松地将数据移入和移出不同的数据格式及 Apache Derby 数据库。集成在这些工具内的是库浏览器 (Repository Browser),拥有 CVS 和 Subversion (SVN) 的完整来源控制客户端。

2、两者的区别,简单的说,就是javaDB是一个简化轻量级数据库,适合小型系统的小规模测试用,完全可以跑在内存里的数据库,它只有3M大小,而MySQL则是可以应用部署大型系统的数据库,功能更多更全,也更稳定,是用范围更广。

3、下面是个使用derby的简单例子:
首先导入JAR包:derby.jar,如果你装的是JDK6,在C:\Program Files\Sun\JavaDB\lib目录下就可以找到.
然后就要创建数据库了:


private Connection getConnection() throws SQLException {
Connection connection = DriverManager
.getConnection("jdbc:derby:userDB;create=true;user=test;password=test");
connection.setAutoCommit(false);
return connection;
}




其中userDB是要连接数据库的名字,create=true表示如果该数据库不存在,则创建该数据库,如果数据库存在,则用用户user=test;密码password=test连接数据库.

有了数据库,接下来该建表了:


private void createTable(Connection connection) throws SQLException {
Statement statement = connection.createStatement();

String sql = "create table USERS("
+ " ID BIGINT not null generated by default as identity,"
+ " USER_NAME VARCHAR(20) not null,"
+ " PASSWORD VARCHAR(20),"
+ " constraint P_KEY_1 primary key (ID))";
statement.execute(sql);

sql = "create unique index USER_NAME_INDEX on USERS ("
+ " USER_NAME ASC)";
statement.execute(sql);

statement.close();
}



创建了 USERS表,包括ID,USER_NAME,PASSWORD三个列,其中ID是主键,其中generated by default as identity 的作用类似sequence,identity是定义自动加一的列,
GENERATED BY ALWAYS AS IDENTITY
GENERATED BY DEFAULT AS IDENTITY
By always和by default是说明生成这个IDENTITY的方式。
By always是完全由系统自动生成。
by default是可以由用户来指定一个值。
编写与USERS表对应的javabean(这个就不多说了),:


public class User implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

private Long id;

private String userName;

private String password;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}


接下来就可以就数据库进行增删改查的操作了:

插入数据:


private void create(User user) {
Connection connection = null;

try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement("insert into users (user_name,password) values(?,?)");

int index = 1;
statement.setString(index++, user.getUserName());
statement.setString(index++, user.getPassword());

statement.execute();

user.setId(this.getId(connection));

connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}




private Long getId(Connection connection) throws SQLException {
CallableStatement callableStatement = connection
.prepareCall("values identity_val_local()");

ResultSet resultSet = callableStatement.executeQuery();
resultSet.next();
Long id = resultSet.getLong(1);
resultSet.close();
callableStatement.close();
return id;
}


getId方法是获得系统默认的id值,是通过 identity_val_local()获得的,而函数IDENTITY_VAL_LOCAL()则可以在INSERT语句执行之后,为我们返回刚才系统为id所产生的值.感觉还是有点想sequence的curr_val.

修改数据:


private void update(User user) {
Connection connection = null;

try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement("update users set user_name=?,password=? where id=?");

int index = 1;
statement.setString(index++, user.getUserName());
statement.setString(index++, user.getPassword());
statement.setLong(index++, user.getId());

statement.execute();

connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}



删除数据:



public void delete(Long id) {
Connection connection = null;

try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement("delete from users where id=?");
statement.setLong(1, id);
statement.execute();
connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}

查询数据:


public User findById(Long id) {
Connection connection = null;

try {
connection = this.getConnection();

PreparedStatement statement = connection
.prepareStatement("select user_name,password from users where id=?");
statement.setLong(1, id);
ResultSet resultSet = statement.executeQuery();

User user = null;

if (resultSet.next()) {
user = new User();
user.setId(id);
user.setUserName(resultSet.getString("user_name"));
user.setPassword(resultSet.getString("password"));
}

resultSet.close();
statement.close();
connection.commit();
return user;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
分享到:
评论

相关推荐

    java db 省市区编码表

    在Java DB中,省市区编码表是一个用于存储中国省级、市级和区县级行政区域编码的数据结构,常用于地理信息系统、地址管理或者与地理位置相关的应用程序。这个表通常包含四个字段:`id`、`areaid`、`area` 和 `...

    MyBatis3 用户指南 附JavaDB实例 pdf

    它通过消除几乎所有的JDBC代码及手动设置参数和获取结果集的操作,使得Java开发者可以专注于SQL本身。 - **特点**: - 支持自定义SQL:允许开发者根据需求编写SQL语句。 - 存储过程支持:可以直接调用数据库中的...

    JavaDB+JSP+AJAX实现的级联下拉菜单 .rar

    JavaDB、JSP和AJAX是Web开发中的关键技术,它们共同构建了动态、交互式的Web应用程序。本项目中,"JavaDB+JSP+AJAX实现的级联下拉菜单"是一个经典的应用场景,用于提升用户界面的用户体验,特别是在数据关联和筛选时...

    MyBatis3_用户指南(附JavaDB实例).

    #### 一、MyBatis是什么? - **定义**:MyBatis是一个优秀的持久层框架,它支持定制化的SQL、存储过程以及高级映射功能。MyBatis几乎消除了所有的JDBC代码,极大地简化了数据库操作。 - **特点**: - 支持自定义...

    db4o-7.2-java

    **db4o-7.2-java** 是一个针对Java平台的开源对象数据库系统,它将传统的关系型数据库理念与面向对象编程相结合,为开发者提供了一种高效、灵活的数据存储解决方案。db4o允许开发者直接存取Java对象,而无需通过SQL...

    DB4o 将一个对象保存到文件中,然后查询读取

    DB4o(Database for Objects)是一款开源的对象数据库系统,它允许开发者将Java或.NET平台上的对象直接存储到数据库中,而无需进行SQL映射。在本文中,我们将深入探讨如何利用DB4o将一个对象保存到文件中,然后进行...

    MyBatis3_用户指南(附JavaDB实例)

    这份"MyBatis3_用户指南(附JavaDB实例)"文档是学习MyBatis3的基础资料,非常适合初学者深入理解和实践。 1. **MyBatis框架简介** MyBatis是一个优秀的轻量级持久层框架,它支持定制化SQL、存储过程以及高级映射。...

    如何把DB数据包转换成CVS数据包

    标题中的“如何把DB数据包转换成CSV数据包”指的是将数据库(DB)中的数据导出并转换成逗号分隔值(CSV)格式的文件。这种操作在数据迁移、数据分析或与非关系型数据库交互时非常常见。下面将详细介绍这个过程。 1....

    db4o for java

    2. **透明性**:db40提供了透明的数据库访问,意味着开发者可以在不改变代码的情况下,像操作普通Java集合一样操作数据库对象。这得益于它的API设计,它允许直接打开、保存和检索对象,无需编写SQL语句。 3. **对象...

    MyBatis3用户指南(附JavaDB实例

    **MyBatis3用户指南(附JavaDB实例)** MyBatis3是一款强大的持久层框架,它简化了Java开发中的数据库操作,将SQL语句与Java代码紧密结合,提供了灵活的映射机制,使得数据访问更加高效。这篇由罗利辉翻译的用户指南...

    cognos connect db2java

    《Cognos Connect与DB2Java的连接技术详解》 在企业级数据分析和报表系统中,IBM Cognos Analytics(前身为Cognos 10.2.2)是一款广泛使用的商业智能工具,它能够有效地整合各类数据源,提供丰富的数据分析和可视化...

    db4o-5.0-tutorial-java帮助

    标题:db4o-5.0-tutorial-java帮助 描述:这份资料是关于db4o数据库的使用教程,特别针对Java开发人员。db4o是一款开源的对象数据库,支持Java、.NET以及Mono平台。该教程旨在帮助用户快速上手db4o,并在开发过程中...

    db转java资源文件.rar

    本资源"db转java资源文件.rar"主要涉及到如何将数据库中的表结构转换为MyBatis所需的Mapper接口和Entity类,以便在Java应用中进行高效的数据操作。这里我们将详细讨论MyBatis、SQLServer以及如何利用工具如mybatis-...

    Access mdb 转 sqlite 数据库java代码

    标题中的“Access mdb 转 sqlite 数据库java代码”指的是使用Java编程语言将Microsoft Access(mdb)数据库转换为SQLite数据库。Access是微软公司的一款关系型数据库管理系统,而SQLite是一款轻量级、开源的嵌入式...

    dbtobean 源代码 数据库库表转换为java对象

    《dbtobean:数据库库表到Java对象的转换源码解析》 在软件开发过程中,数据模型的设计和实现是至关重要的一步。当涉及到数据库与应用程序之间的交互时,将数据库中的表结构映射到Java对象(通常称为Bean)是一种...

    Java DB CSV Export:将db数据导出为csv、json、xml或sql文件的Java工具-开源

    将 db 数据导出为 csv、json、xml 或 sql 文件的 Java 工具。 支持 Oracle DB、MySQL DB、PostgreSQL DB、Firebird DB、SQLite DB、Derby DB 和 HSQL DB。 此工具不包含所需的 db 驱动程序,但只需下载和配置一次...

    MyIbatis\MyBatis3_用户指南(附JavaDB实例)

    - **Type Handlers**:处理特定类型的转换,例如将Java类型转换为SQL类型。 - **ObjectFactory**:负责创建新的对象实例,默认情况下使用默认构造函数创建对象。 - **Plugins**:允许扩展MyBatis的功能,比如拦截器...

    收集的java坐标转换WGS84、GCJ02B、BD09及纠偏

    这里提到的"java坐标转换"指的是使用Java编程语言处理不同坐标系之间的转换。在提供的压缩包中,有两个关键文件:`CoordinateConvert.java`和`EvilTransform.java`,它们可能包含了实现这些转换的算法。 首先,我们...

    java-db-Login

    LoginRegisterApp 安装MySQL版本8.0.21(即8.0.x) ... 如果您正在使用其他用户,则需要在以下... cd / root / java-db-Login / src / main 更新文件-DB结束POINT java / com / example / DbUtil.java java / com / e

    Java JDBC

    ### Java JDBC:深入理解与应用 #### Java JDBC数据库编程概览 Java Database Connectivity(JDBC)是Java平台上的标准数据库访问技术,它提供了一种通用的API,使开发者能够使用SQL语句操作各种关系型数据库管理...

Global site tag (gtag.js) - Google Analytics