derby学习笔记 ( by quqi99 )
作者:张华 发表于:2009-10-15
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
http://blog.csdn.net/quqi99
package derby;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @version 0.10 2009-10-15
* @author Zhang Hua
*/
public class DerbyTest {
/* 缺省的模式是内嵌式的*/
public String driverType = "embedded";
public String driver = "org.apache.derby.jdbc.EmbeddedDriver";
public String protocol = "jdbc:derby:";
/**
* 1) 使用ij工具进行数据库的操作,在命令提示符下输入ij
* 2) 创建数据库:connect 'jdbc:derby:d:/testBD;create=true'; 在d盘根目录下创建了一个名字叫testdb的数据库
* 3) 带模连接到数据库: connect 'jdbc:derby:d:/testDB;user=admin;password=password';
* 4) 在数据库中建立一个表 create table testTable(id varchar(3),name varchar(6),age varchar(2));
5) 查看表的结构: describe testTable;
6) 创建有模式的表 create table user1.testTable(id varchar(3),name varchar(6),age varchar(2));
7) 查看数据库下所有的表 show tables;
8) 退出derby数据库 exit;
1,嵌入式模式只放derby.jar一个包即可;
2,网络模式还需要derbyclient.jar, 若是使用db2通用驱动,需要db2jcc.jar,db2jcc_license_c.jar (但是我用JCC驱动未试通)
3,如果使用localhost可以连接,使用IP却不能连接的话,应该这样启动derby : NetworkServerControl start -h 192.168.1.51 -p 1527
或者: java -jar %DERBEY_HOME%\lib\derbyrun.jar server start
*/
public void test(String[] args) throws Exception{
int length = args.length;
for (int index = 0; index<length; index++){
if (args[index].equalsIgnoreCase("jccclient")){
//JCC驱动未调通,报错为:com.ibm.db2.jcc.am.io: [jcc][10165][10048][3.57.82] 数据库 URL 语法 jdbc:derby:net://192.168.1.51:1527/d:/testDB;create=true;user=admin;password=password 无效。 ERRORCODE=-4461, SQLSTATE=42815
driverType = "jccclient";
driver = "com.ibm.db2.jcc.DB2Driver";
protocol = "jdbc:derby:net://192.168.1.51:1527/";
}
if (args[index].equalsIgnoreCase("derbyclient")){
driverType = "derbyclient";
driver = "org.apache.derby.jdbc.ClientDriver";
protocol = "jdbc:derby://192.168.1.51:1527/";
}
}
Class.forName(driver).newInstance();
System.out.println(driver);
Connection conn = DriverManager.getConnection(protocol +"d://testDB;create=true;user=admin;password=password");
conn.setAutoCommit(false);
Statement s = conn.createStatement();
//create table
s.execute("create table derbyDB(num int, addr varchar(40))");
//insert data
s.execute("insert into derbyDB values (1956,'Webster St.')");
s.execute("insert into derbyDB values (1910,'Union St.')");
//update data
s.execute("update derbyDB set num=180, addr='Grand Ave.' where num=1956");
s.execute("update derbyDB set num=300, addr='Lakeshore Ave.' where num=180");
//query data
ResultSet rs = s.executeQuery("SELECT num, addr FROM derbyDB ORDER BY num");
if (rs.next()){
System.out.println(rs.getInt(1));
}
//delete table
s.execute("drop table derbyDB");
rs.close();
s.close();
System.out.println("Closed result set and statement");
conn.commit();
conn.close();
//关闭数据库服务
//DriverManager.getConnection("jdbc:derby:;shutdown=true");
}
public static void main(String[] args){
String type = "jccclient";
//type = "derbyclient";
String[] paras = new String[1];
paras[0] = type;
try {
new DerbyTest().test(paras);
} catch (Exception e) {
e.printStackTrace();
}
}
}