Derby JDBC新手教程

陈新疆

发布于 2018.04.09 10:20 阅读 4662 评论 0

 本文发表于:

 

http://codingcamp.cn/view/article/details?articleId=186

 

 

Derby是一个100%Java开源的关系数据库,支持有限的重要的标准SQL语句。它既可以做为网络数据库服务器使用,也可以方便地内嵌在应用程序中使用。

 

一、下载安装

  1.下载地址:

  官网下载地址:http://db.apache.org/derby/derby_downloads.html,根据自己的java开发环境jdk的版本选择相对应的版本即可。注意后缀为.zip的为windows平台版本,另外一般选择bin版本。

 

  2.安装:

  解压即可(不读写Windows注册表)。

 

  3.环境变量配置:

a. 建立DERBY_HOME

b.   PATH设置为:%PATH%;%DERBY_HOME%\bin;

c.   CLASSPATH设置为:

%CLASSPATH%;%DERBY_HOME%\lib\derby.jar;%DERBY_HOME%\lib\derbyclient.jar;%DERBY_HOME%\lib\derbytools.jar;%DERBY_HOME%\lib\derbynet.jar;

d. 打开CMD,输入命令sysinfo,如果能正确输出系统信息,而不是找不到该命令的错误,则表明安装配置成功。

 

二、数据库管理

       Derby数据库主要工作在两种模式:嵌入式模式和网络服务器模式。嵌入式模式的主要应用过程如下:

 

  1. 进入数据库管理系统:

  运行Derby的管理程序:ij(相当于OracleSQL Plus程序),提示符会变成ij>

 

  2. 连接指定的数据库(相当于MySQLuse命令):

  所有对数据库的操作,必须首先连接到该数据库。创建数据库存放的目录并在CMD中切换工作目录到该目录(本例中目录为D:\\DerbyData,要创建的数据库名称为TESTDB),执行以下命令(ij的每一条命令必须以分号结尾):

       ij>connect ‘jdbc:derby:TESTDB;create=true’;

  将创建该数据库,并连接该数据库。如果该数据库已存在,则只需要执行:

        ij>connect ‘jdbc:derby:TESTDB’;

  连接相关的语法为:

查看当前连接的数据库可以使用命令:

如果已经连接到某数据库,结果为:

如果同时连接了两个以上的数据库,结果为:

如果想从TESTDB2的连接,切换到TESTDB的连接,则执行:

             

 

  3. 创建表结构并插入数据

              插入数据:

            ij> insert into bookuser(username, password)

              values(‘abc’,’123’);

 

可以通过下面的命令,查看数据库中的表:

前面的APP是默认的模式名称,可以通过create table my.bookuser的形式修改它。一般情况下,使用默认的就可以了。

 

  4. 查询示例

 

三、JDBC

  1. 加载驱动(配置Derby.jarBuild Path

  private static String driver = “org.apache.derby.jdbc.EmbeddedDriver”;

  private static String protocol = “jdbc:derby:”;

        String dbName = D:\\ DerbyData\\TESTDB;

      Class.forName(driver).newInstance();

 2. 创建连接

      Connection conn = DriverManager.getConnection(protocol + dbName);

 3. 数据库查询

Statement s=conn.createStatement();

ResultSet rs=s.executeQuery(“select * from bookuser”);

while (rs.next()) {

  System.out.println(rs.getInt(“ID”));

  System.out.println(rs.getString(“USERNAME”));

}

 4. 数据库更新

ResultSet rs=s.executeUpdate(“update bookuser set username=” + “李四

                                        + “ where username=”张三”);

  5. 参数化查询

String sql = “insert into bookuser(username, password) values(?, ?)”

PreparedStatement ps = conn.prepareStatement(sql);

ps.setString(1, “王五”);

ps.setString(2, “123456”);

ps.executeUpdate();

 

四、其他

  1. 定义自增ID主键

INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1)

  2. 分页例子(获取前4行):

select * FROM (select ROW_NUMBER() OVER() AS R, customer_id, zip from CUSTOMER) AS T where R>0 and R<5 order by customer_id desc;

  3 .获取当前时间:

VALUES CURRENT_TIME

VALUES CURRENT_TIMESTAMP

   VALUES CURRENT_DATE

  4. 时间比较:

select coun(*)  from books where id='1' and TIMESTAMPDIFF(SQL_TSI_SECOND, buy_date, CURRENT_TIMESTAMP)>100;  

 

参考网址

  1. https://blog.csdn.net/winter13292/article/details/25543779
  2. https://www.cnblogs.com/java-class/p/5753997.html
  3. https://blog.csdn.net/zhangwei217245/article/details/1956299