Derby-10.11学习笔记(一)简单介绍
2015-11-24 10:49
691 查看
鲁春利的工作笔记,谁说程序员不能有文艺范?
很多年没有使用过Derby了,由于工作原因需要再次使用,之前使用时从未记录,忽然不知道该如何使用了,这次再使用得抓紧记录一下了。。。
Apache Derby是完全使用Java实现的开放源码数据库,下载地址:http://db.apache.org/derby/
Apache Derby有四种不同的发布版本供下载:
解压后的目录结构如下
Apache Derby提供了两种基本的安装部署形式:Embedded形式和Derby Network Server形式。
Embedded形式
又称内嵌模式,Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见。
Derby Network Server形式
又称网络模式,Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
配置环境变量
配置环境变量的目的是为了简化操作,否则每次执行脚本都需要切换或指定derby的全路径。
验证配置
Apache Derby使用
Embedded形式
Stu数据库的文件存储格式如下图:
如果Stu数据库已经存储了一部分数据,当在其他目录调用了ij.bat,查询数据时:
Derby Network Server形式
通过startNetworkServer.bat命令启动Derby Server。
通过ij.bat工具进行操作
Derby安装目录的lib下提供了开发和使用derby所有jar文件,主要有:
使用Java访问Derby库
Embedded Mode
本文出自 “闷葫芦的世界” 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1716255
很多年没有使用过Derby了,由于工作原因需要再次使用,之前使用时从未记录,忽然不知道该如何使用了,这次再使用得抓紧记录一下了。。。
Apache Derby是完全使用Java实现的开放源码数据库,下载地址:http://db.apache.org/derby/
Apache Derby有四种不同的发布版本供下载:
bin distribution - contains the documentation, javadoc, and jar files for Derby. lib distribution - contains only the jar files for Derby. lib-debug distribution - contains jar files for Derby with source line numbers. src distribution - contains the Derby source tree at the point which the binaries were built.
解压后的目录结构如下
Apache Derby提供了两种基本的安装部署形式:Embedded形式和Derby Network Server形式。
Embedded形式
又称内嵌模式,Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见。
Derby Network Server形式
又称网络模式,Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
配置环境变量
配置环境变量的目的是为了简化操作,否则每次执行脚本都需要切换或指定derby的全路径。
建立DERBY_HOME,值:E:\mvtech\db-derby-10.11.1.1 在Path加入:%DERBY_HOME%\bin说明:环境变量配置并不是必须的。
验证配置
# 配置后就可以在任意位置执行derby安装目录bin下面的脚本了 C:\Users>sysinfo.bat ------------------ Java 信息 ------------------ Java 版本: 1.7.0_79 Java 供应商: Oracle Corporation Java 主目录: C:\Java\jdk1.7.0_79\jre Java 类路径: .;C:\Java\jdk1.7.0_79\lib\dt.jar;C:\Java\jdk1.7.0_79\lib\tools.jar;E:\mvtech\db-derby-10.11.1.1/lib/derby.jar;E:\mvtech\d b-derby-10.11.1.1/lib/derbynet.jar;E:\mvtech\db-derby-10.11.1.1/lib/derbyclient.jar;E:\mvtech\db-derby-10.11.1.1/lib/derbytools.jar OS 名: Windows 7 OS 体系结构: amd64 OS 版本: 6.1 Java 用户名: Administrator Java 用户主目录:C:\Users\Administrator.ZGC-20130427XQA Java 用户目录: C:\Users java.specification.name: Java Platform API Specification java.specification.version: 1.7 java.runtime.version: 1.7.0_79-b15 --------- Derby 信息 -------- [E:\mvtech\db-derby-10.11.1.1\lib\derby.jar] 10.11.1.1 - (1616546) [E:\mvtech\db-derby-10.11.1.1\lib\derbytools.jar] 10.11.1.1 - (1616546) [E:\mvtech\db-derby-10.11.1.1\lib\derbynet.jar] 10.11.1.1 - (1616546) [E:\mvtech\db-derby-10.11.1.1\lib\derbyclient.jar] 10.11.1.1 - (1616546) ------------------------------------------------------
Apache Derby使用
Embedded形式
# 切换到${DERBY_HOME}\bin目录下执行ij.bat文件 ij 版本 10.11 # 查看帮助 ij> help; # CRUD操作 ij> connect 'jdbc:derby:Stu;create=true'; ij> create table student(sno int, sname varchar(20)); 已插入/更新/删除 0 行 ij> describe student; COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ SNO |INTEGER |0 |10 |10 |NULL |NULL |YES SNAME |VARCHAR |NULL|NULL|20 |NULL |40 |YES 已选择 2 行 ij> insert into student(sno, sname) values(100, 'luchunli'); 已插入/更新/删除 1 行 ij> insert into student(sno, sname) values(101, 'zhangsan'); 已插入/更新/删除 1 行 ij> select * from student; SNO |SNAME -------------------------------- 100 |luchunli 101 |zhangsan 已选择 2 行 ij> show tables in APP; TABLE_SCHEM |TABLE_NAME |REMARKS ---------------------------------------------------------------------- APP |STUDENT | 已选择 1 行 ij>说明:在${DERBY_HOME}\bin目录下执行ij.bat文件,并进行数据库连接,此时会在${DERBY_HOME}\bin目录下创建名为Stu的数据库。
Stu数据库的文件存储格式如下图:
如果Stu数据库已经存储了一部分数据,当在其他目录调用了ij.bat,查询数据时:
C:\Users>ij.bat ij 版本 10.11 ij> connect 'jdbc:derby:Stu'; 错误XJ004:数据库“Stu”未找到。 ij> # 连之前创建的数据库都不见了,这就是Derby的Embedded模式存在的问题。如果此时再启动一个ij.bat程序,尝试连接Stu数据库是无法连接的:
ij 版本 10.11 ij> connect 'jdbc:derby:Stu;create=true'; 错误XJ040:无法使用类加载程序 sun.misc.Launcher$AppClassLoader@6150818a 启动数据库 'Stu', 请参阅下一个异常错误,以了解详细信息。 错误XSDB6:Derby 的另一个实例可能已引导数据库 E:\mvtech\db-derby-10.11.1.1\bin\Stu。
Derby Network Server形式
通过startNetworkServer.bat命令启动Derby Server。
通过ij.bat工具进行操作
C:\Users>ij.bat ij 版本 10.11 ij> connect 'jdbc:derby://localhost:1527/mywork;create=true'; ij> show tables in app; TABLE_SCHEM |TABLE_NAME |REMARKS ------------------------------------------------------------------------ 已选择 0 行 ij> create table student(sno int, sname varchar(20)); 已插入/更新/删除 0 行 ij> show tables in app; TABLE_SCHEM |TABLE_NAME |REMARKS ------------------------------------------------------------------------ APP |STUDENT | 已选择 1 行 ij> insert into student values(100, 'luchunli'); 已插入/更新/删除 1 行 ij> insert into student values (101, 'zhangsan'); 已插入/更新/删除 1 行 ij> commit; ij> select * from student; SNO |SNAME -------------------------------- 100 |luchunli 101 |zhangsan 已选择 2 行 ij>此时再次调用ij.bat并连接Derby Server同样是可以访问的
E:\mvtech\db-derby-10.11.1.1>ij.bat ij 版本 10.11 ij> connect 'jdbc:derby://localhost:1527/mywork;create=true'; ij> show tables in app; TABLE_SCHEM |TABLE_NAME |REMARKS ------------------------------------------------------------------------ APP |STUDENT | 已选择 1 行 ij> select * from student; SNO |SNAME -------------------------------- 100 |luchunli 101 |zhangsan 已选择 2 行 ij>生成的数据库文件仍然会默认存放在${DERBY_HOME}\bin目录下:
Derby安装目录的lib下提供了开发和使用derby所有jar文件,主要有:
使用Java访问Derby库
Embedded Mode
package com.lucl.derby; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.log4j.Logger; /** * @author luchunli * @description 以Embedded Mode运行 */ public class EmbeddedModeMain { private static final Logger logger = Logger.getLogger(EmbeddedModeMain.class); public static void main(String[] args) throws SQLException, ClassNotFoundException { String driver = "org.apache.derby.jdbc.EmbeddedDriver"; // 在当前项目目录下创建DemoDB // String dbName="DemoDB"; // 指定目录下创建DemoDB String dbName="F:\\ftpfile\\DemoDB"; String connectionURL = "jdbc:derby:" + dbName + ";create=true"; Class.forName(driver); Connection connection = DriverManager.getConnection(connectionURL); Statement st = connection.createStatement(); st.execute("CREATE TABLE t_sample (id bigint, name varchar(30), in_blacklist boolean)"); st.close(); st = connection.createStatement(); st.execute("INSERT INTO t_sample (id, name, in_blacklist) values (" + System.currentTimeMillis() + ", 'luchunli', false)"); st = connection.createStatement(); ResultSet rs = st.executeQuery("SELECT id, name, in_blacklist FROM t_sample"); while (rs.next()) { logger.info(rs.getLong("id")); logger.info(rs.getString("name")); logger.info(rs.getBoolean("in_blacklist")); } connection.close(); } }NetWork Server Mode
package com.lucl.derby; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.log4j.Logger; /** * @author luchunli * @description 以NetWork Server Mode运行 */ public class NetWorkServerModeMain { private static final Logger logger = Logger.getLogger(NetWorkServerModeMain.class); public static void main(String[] args) throws ClassNotFoundException, SQLException { String driver = "org.apache.derby.jdbc.ClientDriver"; String dbName="//localhost:1527/DemoDB"; String connectionURL = "jdbc:derby:" + dbName + ";create=true"; Class.forName(driver); Connection connection = DriverManager.getConnection(connectionURL, "user", "passwd"); Statement st = connection.createStatement(); st.execute("CREATE TABLE t_sample (id bigint, name varchar(30), in_blacklist boolean)"); st.close(); st = connection.createStatement(); st.execute("INSERT INTO t_sample (id, name, in_blacklist) values (" + System.currentTimeMillis() + ", 'luchunli', false)"); st = connection.createStatement(); ResultSet rs = st.executeQuery("SELECT id, name, in_blacklist FROM t_sample"); while (rs.next()) { logger.info(rs.getLong("id")); logger.info(rs.getString("name")); logger.info(rs.getBoolean("in_blacklist")); } connection.close(); } }
本文出自 “闷葫芦的世界” 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1716255
相关文章推荐
- 九度oj-1524-复杂链表的复制
- XML数据解析
- 黑客是如何发现女朋友出轨的
- c\c++ codeblocks编译常见错误
- Maven构建简单的多模块项目
- VS自动生成的packages.config配置文件有什么用?
- 5大食物千万别挑太艳的
- 跟着9张思维导图学习Javascript
- 网络编程学习笔记-全零网络IP地址0.0.0.0详谈
- IOS学习——使用第三方库
- 启动界面
- C#多线程|匿名委托传参数|测试您的网站能承受的压力
- linux命令
- Node学习笔记
- 网络编程学习笔记-linux常用的网络命令
- 【HDOJ】1669 Jamie's Contact Groups
- php截取字符去掉最后一个字符
- Exchange-OWA与域控集成-实现单点登录
- Android Studio 使用Gradle在Terminal终端用命令打包
- 分区助手专业版5.0下载与使用方法