jdk6到jdk8自带Derby数据库,在jdk目录的db/lib下会找到derby.jar。
其他jdk版本用maven导入:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.14.2.0</version>
<!-- <scope>test</scope> -->
</dependency>
注:
1.把<scope>test</scope>注释掉,不然maven会找不到derby的jdbcDriver类;(之前用的数据库Driver找不到类应该也是该问题,解决方案从 https://stackoverflow.com/questions/21262316/java-lang-classnotfoundexception-org-apache-derby-jdbc-embeddeddriver 找到);
2.derby的10.15.X版本没有EmbeddedDriver,需要用10.14.X的版本;
Demo:
/**
* 2019年4月22日上午9:31:21
*/
package testderby;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author XWF
*
*/
public class TestDerby {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection conn = DriverManager.getConnection("jdbc:derby:derbydb;create=true");
// Connection conn = DriverManager.getConnection("jdbc:derby:derbydb");
Statement state = conn.createStatement();
state.executeUpdate("create table derbytable(id int,val varchar(128))");
state.close();
Statement state2 = conn.createStatement();
state2.executeUpdate("insert into derbytable values (1,'tom') ");
state2.executeUpdate("insert into derbytable values (2,'jerry') ");
state2.close();
PreparedStatement pstate1 = conn.prepareStatement("select * from derbytable where id = ?");
pstate1.setInt(1, 2);
ResultSet rset1 = pstate1.executeQuery();
while(rset1.next()) {
System.out.println(rset1.getInt(1)+">"+rset1.getString(2));
}
pstate1.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
结果:
参考:
http://db.apache.org/derby/papers/DerbyTut/embedded_intro.html