package webbook.chapter5;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCExample {
public static void main(String[] args) {
String driver = "org.apache.derby.jdbc.ClientDriver";
String url = "jdbc:derby://localhost:1527/MyDB";
String username = "zhangsan";
String password = "123456";
String sql = "insert into guestbook (id,name,email,phone,title,content,time)"
+"values(DEFAULT,?,?,?,?,?,CURRENT DATE)";
/*DEFAULT Derby中的自动增长 CURRENT DATE当前时间*/
Connection conn = null;
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "gudong");
pstmt.setString(2, "ZhangFei@163.com");
pstmt.setString(3, "110");
pstmt.setString(4, "title");
pstmt.setString(5, "content");
pstmt.executeUpdate();
sql="select * from guestbook ";
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println("id:"+rs.getInt("ID"));
System.out.println("name:"+rs.getString("NAME"));
System.out.println("email:"+rs.getString("EMAIL"));
System.out.println("phone:"+rs.getString("PHONE"));
System.out.println("title:"+rs.getString("TITLE"));
System.out.println("content:"+rs.getString("content"));
System.out.println("date:"+rs.getString("time"));
}
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
-----------------------------------------
Myeclipse Derby使用指南【转】
一.Derby介绍
Apache Derby是开源的,100% Java编写的,容易管理的关系数据库管理系统,它可以和一些商业产品的特性进行交付。
Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。与其他难以部署的数据库不同,安装 Derby 非常简单,只需要将其 .jar 文件复制到系统中并为您的项目添加该 .jar 文件即可。
Derby拥有一个令人惊奇的特性列表。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。一部分的列表特性使Derby从其他的Java 关系数据库管理系统中分离出来,包括:
100% Java实现
100% Java类型4 JDBC驱动
SQL92E标准支持大部分SQL 99特性
ACID完全的事务独立的事务支持
J2EE支持JNDI,连接池和XA
视图,临时表和保存
BLOB和CLOB数据类型
行和表锁定
有价值的基本查询优化
服务器端指示约束
触发器和存储过程
为服务器端函数,触发器或存储过程等操作在数据库里存储Java代码
能排除CD-ROM里的只读数据库
数据的导入和导出
快速数据库加密选项
您可以采用两种模式来部署和运行Derby:
在嵌入式模式(embedded mode)中,Derby只处理来自与应用程序使用的JVM相同的JVM的请求。在采用嵌入式模式来使用Derby时,应用程序会在启动和关闭时分别自动启动或停止关系引擎。Derby包的derby.jar文件(2MB)包含了Derby 数据库引擎和嵌入式JDBC驱动程序。嵌入式模式的主要优点是不需要进行网络 和服务器设置。因为你的应用程序包含了Derby引擎,使用者并不知道你使用了一个关系数据库。这点很适合我们现在桌面工具的使用要求。
在网络服务器模式(network server mode)中,Derby会处理来自不同JVM的应用程序请求。或者,如果您喜欢使用Perl、PHP、Python或C来编写程序,那么您也可以部署一个Derby网络服务器,并通过各种语言特有的模块连接到这个服务器上,例如Perl的DBI(Database Interface)和PHP的ODBC(Open Database Connectivity)。Derby的derbynet.jar文件(0.2MB)包含了Derby Network Server。
另外,Derby提供了Eclipse的插件供开发人员使用,下面将介绍插件的安装及使用。
二.Derby安装与使用
1.软件的下载
你可以在Derby的官方网站下载,同时也可以下载Derby的两个Eclipse插件:derby_core_plugin和derby_ui_plugin;在下面使用前,请安装好JVM 1.4.x或更高版本;以及Eclipse 3.x。
2. Derby的Eclipse的插件安装与使用。
安装插件
Derby插件的安装与其他Eclipse插件安装类似,只需要将之前下载的两个插件解压到Eclipse plugins目录下,然后重新启动Eclipse即可。 :
使用插件
在使用该插件前,我们先创建一个Java项目,取名为DerbyDemo,然后在Package Explorer视图选择该项目,单击右键选择菜单[Apache Derby]->[Add Apache Derby Nature],如图:
接下来是配置Derby相关属性,在Package Explorer视图选择项目单击[Properties]在左边的属性列表中选择Apache Derby;并将 Derby 的主目录设为不同于项目根目录的某个目录,例如D:/derbyDB,如图:
配置完毕后,我们就可以启动Derby服务器了,在Package Explorer视图选择项目单击[Apache Derby]->[Start Derby Network Server];控制台将输出Derby的启动信息,启动就完成。
同样的,Derby 服务器的关闭也是类似的,在Package Explorer视图选择项目单击[Apache Derby]->[Stop Derby Network Server]。
2.嵌入运行模式
将derby.jar 和derbytools.jar导入工程
下面是连接数据库的代码片断,create=true表示创建一个新数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestDerbyBaisc {
public static void main(String[] args) {
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();//加载驱动
Connection conn = DriverManager.getConnection("dbc:derby:TESTDB;create=true");//连接数据库
Statement st = conn.createStatement();
st.execute("create table USER_INFO (ID INT NOT NULL,NAME VARCHAR(10) NOT NULL)");//建表
st.executeUpdate("insert into USER_INFO(ID,NAME) values (1,'hermit')");//插入数据
st.executeUpdate("insert into USER_INFO(ID,NAME) values (2,'test')");//插入数据
ResultSet rs = st.executeQuery("select * from USER_INFO");//读取刚插入的数据
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println("ID="+id);
System.out.println("NAME="+name);
}
} catch(Exception e){
e.printStackTrace();
}
}
}