一、 Derby數據庫平台的搭建
● JDK 1.6版本及之后的版本為Java平台提供了一個數據庫管理系統,簡稱Derby數據庫。
● 連接Derby數據庫需要有關的類,這些類以jar文件的形式存的放在Java安裝目錄的db\lib目錄中, 需要把Java安裝目錄\db\lib,
例如
E:\jdk1.8\db\lib
下的下列三個jar文件:
************************
▲ derby.jar
▲ derbynet.jar
▲ derbyclient.jar
***************************
復制到Java運行環境的擴展中,即將這些jar文件存放在JDK安裝目錄的\jre\lib\ext目錄中.
例如,復制到:E:\jdk1.8\jre\lib\ext 目錄中
如果jdk中沒有Derby的jar文件,這里給出一個壓縮文件的百度網盤鏈接:
鏈接:https://pan.baidu.com/s/1lC4z0w8CWrHpRSX340NnJQ
提取碼:znx9
解壓后找到derby.jar
二 、配置系統變量path
★ 為了在命令行窗口操作Derby數據庫,需要使用Java安裝目錄中db\bin下的一些命令。
★ 可以將db\bin作為系統環境變量path的一個值,以便隨時在命令行窗口中使用db\bin中的命令。
(1)對於Windows 10/Windows 7,用鼠標右鍵單擊“計算機”/“我的電腦”
(2)在彈出的快捷菜單中選擇“屬性”命令彈出“系統特性”對話框,再單擊該對話框中的“高級系統設置”/“高級選項”。
(3)然后單擊按鈕“環境變量”,添加系統環境變量。如果曾經設置過環境變量path,可單擊該變量進行編輯操作,將需要的值加入即可。
在系統變量中新建一個變量,變量名為DERBY_HOME ,變量值為D:\java\db-derby-10.14.2.0-bin(變量值就是我們剛才解壓過的derby文件夾)。
接着在Path系統變量中加入:%DERBY_HOME%\bin
三 、在命令行連接內置derby數據庫
內置Derby數據庫的特點是應用程序必須和該Derby數據庫駐留在相同計算機上(內置Derby數據庫也是相對后面的網絡Derby數據庫而言的),並且在當前計算機中,同一時刻不能有兩個Java程序訪問同一個內置數據庫。
步驟如下:
*********************************************
1.啟動ij環境
●所謂ij環境,就是在該環境下可以使用ij工具來連接數據庫,在數據庫庫中創建表、進行諸如查詢、增刪改等操作。
●執行ij.bat批處理文件,啟動ij環境(ij.bat是Java安裝目錄db\bin中的一個批處理文件,為了能在命令行窗口的輸入行處於任何目錄中時都可以執行ij.bat批處理文件需將db\bin作為系統環境變量path的一個值)。
●假設連接D:\2000目錄中名字是dog的內置Derby數據庫,那么首先打開命令行窗口,並進入D:\2000目錄,然后執行ij.bat批處理文件。
●退出ij環境,可以在命令行窗口鍵入:exit;注意,不要忘記exit后面的分號。也可以 【Ctrl+C】退出ij環境。
進入ij環境環境后,就可以使用ij提供的各種ij命令,比如連接數據庫、建立表等命令(ij命令不區分大小寫)。
*********************************************
2.連接內置derby數據庫
ij命令如下:
connect 'jdbc:derby:數據庫;create=true|false';
● create=true,如果數據庫不存在,那么就在當前目錄,即啟動ij的當前目錄(比如D:\2000)中創建數據庫,並與所創建的數據庫建立連接。如果數據庫存在,那么不再創建數據庫,直接與存在的數據庫建立連接。
● create=false,如果數據庫存在,就直接與存在的數據庫建立連接,如果數據庫不存在,不再創建數據庫,直接放棄連接。
例如:
connect 'jdbc:derby:dog;create=true';
連接數據庫時,也可以指定數據庫所在的目錄,例如,連接D:\00下名字是cat的數據庫:
connect 'jdbc:derby:D:/00/cat;create=true';
四、 操作表
★ 和數據庫建立連接以后,就可以使用ij命令(這些ij命令就是標准的SQL語句)在數據庫庫中進行創建表、向表中插入記錄、刪除表中的記錄、查詢表中的記錄等操作。。
1. 在數據庫中創建表
創建表的ij命令如下:
●create table 表名(字段1 數據類型, 字段2 字段2屬性...字段n 字段n屬性);
我們准備在dog數據庫中創建名字為mess的表。該表的字段(屬性)為:
◆number(文本,主鍵)
◆name(文本)
◆birth(日期)
◆price(數字,雙精度)。
create table mess (number char(10) primary key,name varchar(20),birth date, price double);
2. 向表中插入記錄(行)
創建表后,就可以使用ij命令向表中插入記錄、使用ij命令查詢記錄。向表中插入記錄的ij命令如下(就是標准的SQL語句):
●insert into 表名 values(字段1值,字段2值,…字段n值);
例如:
insert into mess values('001','藏獒','2015-1-1',18576.98); insert into mess values('002','哈巴','2015-6-19',6576); insert into mess values('003','牧養犬','2015-10-10',9737.9);
3. 查詢表中的記錄
記錄帶着全部字段值:
● select * from 表名;
例如:
select * from mess;
帶着部分字段值:
● select 字段m,...字段n from 表名;
例如:
select name,price from mess;
4. 更新表中的記錄
● update <表名> set <字段名> = 新值 where <條件子句>
例如:
update mess set price = 2999 where number='002'; update mess set name = '牧養狗' where name='哈巴'; update mess set name = '中檔狗' where price<2000 And price>=1000;
5.刪除表中的記錄
● delete from <表名> where <條件子句>
五、 網絡derby數據庫
注意網絡Derby數據庫需要導入的jar包是derbyclient.jar
網絡derby數據庫允許網絡上其他計算機中的Java程序通過網絡訪問該網絡derby數據庫。
步驟:
1.啟動Derby數據庫服務器
在服務器端的命令行窗口執行startNetworkServer.bat啟動Derby數據庫服務器。
2.連接網絡derby數據庫
在命令行連接:
connect 'jdbc:derby://數據庫服務器IP:1527/數據庫名;create=true|false';
例如,
connect 'jdbc:derby://127.0.0.1:1527//student;create=true';
★如果student數據庫不存在,那么上述ij命令就會在服務器端建立student數據庫。建立student數據庫后,在啟動Derby數據庫服務器的目錄(比如D:\00)下可以看到一個名字是student的文件夾,Derby數據庫以文件夾的形式存放,而不是以文件形式存放。
★客戶端和網絡Derby數據庫建立連接后,就可以使用ij命令在網絡Derby數據庫中創建表等操作(這些操作與操作內置Derby數據庫完全相同)。
★以下使用ij命令在網絡Derby數據庫student中創建了名字是mingdan的表,該表有2個字段:xuehao和name,字段名和類型如下
☆ xuehao int primary key not null,
☆ name varchar(32)
(1)
connect 'jdbc:derby://127.0.0.1:1527//student;create=true';
(2)
create table mingdan (xuehao int primary key not null,name varchar(30));
(3)
insert into mingdan values(001,'李奎魁'); insert into mingdan values(2,'翠花花');
六 、Derby數據庫常用的基本數據類型
★ smallint 取值范圍 -2^15~2^15-1。例如,age smallint,其中age是字段名。
★ int 取值范圍 -2^31~2^31-1。例如,spead int 。
★ bigint 取值范圍 -2^63~2^63-1。例如,price int。
★ real或float 取值范圍 -3.402x10^+38~3.402x10+38。例如,length real。
★ double 取值范圍 -1.79769x10+308~1.79769x10+308。例如, weight double。
★ decimal 小數點可精確到31位。例如,height decimal(12,6)。
★ Decimal(n,m)表示數值中共有n位數,其中整數n-m位, 小數m位。
例:decimal(10,6),數值中共有10位數,其中整數占4位,小數占6位。
例:decimal(2,1),插入“1.23”或“1.2345...”會自動四舍五入成“1.2”;
插入“2”會自動補成“2.0”,以確保2位的有效長度,其中包含1位小數。
★ char 最大長度254。例如, name char(20)。
★ varchar 最大長度32672。例如,content varchar(265)。
★ time 取值范圍00:00:00~24:00:00。例如,sleep time。
★ date 取值范圍0001-01-01 ~9999-12-31。例如,birth date。
★ timestamp 取值范圍是date和time的合集。例如,start timestamp。
例如:
(1)
connect 'jdbc:derby:play;create=true';
(2)
create table time_list (shijian time ,name char(18),song char(200));
(3)
insert into time_list values( '20:12:56','劉翠花','月半小夜曲')
七、 JDBC操作數據庫
我們經常使用JDBC進行如下的操作。
● 與一個數據庫建立連接。
● 向已連接的數據庫發送SQL語句。
● 處理SQL語句返回的結果。
1. 連接內置Derby數據庫
步驟
(1)加載Derby數據庫驅動程序
try{ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");//加載驅動 } catch(Exception e) { System.out.print(e); }
(2)連接內置Derby數據庫
Connection con = DriverManager.getConnection("jdbc:derby:數據庫;create=true|false");
例如,
Connection con = DriverManager.getConnection("jdbc:derby:boy;create=true");
以下例1是一個簡單的Java應用程序,該程序連接到內置Derby數據庫dog
import java.sql.*; public class Day1_1{ public static void main(String args[]) { Connection con; Statement sql; ResultSet rs; try{ Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); } catch(Exception e) { System.out.print(e); } try { con=DriverManager.getConnection("jdbc:derby:dog;create=true"); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM mess "); while(rs.next()) { String number=rs.getString(1); String name=rs.getString(2); Date date=rs.getDate(3); double price=rs.getDouble("price"); System.out.print(number+"|"); System.out.print(name+"|"); System.out.print(date.toString()+"|"); System.out.println(price+"|"); } con.close(); } catch(SQLException e) { System.out.println(e); } } }
2. 連接網絡Derby數據庫
★首先服務器端在它的命令行窗口執行startNetworkServer.bat啟動Derby數據庫服務器。
●客戶端的步驟
(1)加載Derby數據庫驅動程序
try{ Class.forName("org.apache.derby.jdbc.ClientDriver");//加載驅動 } catch(Exception e) { System.out.print(e); }
(2)連接網絡Derby數據庫
Connection con = DriverManager.getConnection ("jdbc:derby://數據庫服務器IP:1527/數據庫;create=true|false");
例如,
Connection con = DriverManager.getConnection("jdbc:derby://127.0.0.1:1527//student;create=true");
在運行下面的例2之前,首先在服務器端計算機上打開命令行窗口,並進入D:\00目錄,執行startNetworkServer啟動Derby數據庫服務器啟動(因為例子2要訪問的網絡Derby數據庫位於服務器所在計算機的D:\00目錄中)
import java.sql.*; public class Day1_2 { public static void main(String args[]) { Connection con; Statement sql; ResultSet rs; try{ Class.forName("org.apache.derby.jdbc.ClientDriver"); } catch(Exception e) { System.out.print(e); } try { String uri="jdbc:derby://127.0.0.1:1527//student;create=true"; con=DriverManager.getConnection(uri);//和網絡Derby數據庫student建立連接 sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM mingdan"); while(rs.next()) { String number=rs.getString(1); String name=rs.getString(2); System.out.print(number+"|"); System.out.println(name+"|"); } con.close(); } catch(SQLException e) { System.out.println(e); } } }