简单的JDBC应用程序for Java DB
2008-01-05 08:28:52 来源:WEB开发网核心提示: 今天下载了jdk1.6.0,以后要慢慢来学习1.6中的新特性和其中的一些经典实例,先看看关于java DB的这个最简例子:Simple JDBC application (源码SimpleApp.java、文档及derby.jar,derbynet.jar,derbyclient.ar文件请从jdk1.6.0中找)
今天下载了jdk1.6.0,以后要慢慢来学习1.6中的新特性和其中的一些经典实例。先看看关于java DB的这个最简例子:
Simple JDBC application (源码SimpleApp.java、文档及derby.jar,derbynet.jar,derbyclient.ar文件请从jdk1.6.0中找)
这个例子是一个最小限度的JDBC 应用程序。 关于这个程序:
- 以内嵌式模式(缺省的)或作为一个服务器环境中的客户端运行,这依靠于传递给程序的参数
- 假如运行在内嵌式模式,则启动Derby 引擎
- 假如运行在客户端模式,则连接到 Derby 网络服务器
- 创建并连接到数据库
- 创建一个表
- 插入数据
- 更新数据
- 查询数据
- 删除表
- 关闭连接
- 假如运行在内嵌式模式,则关闭 Derby。
以下是源码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.PRoperties; /* * @author janet */ public class SimpleApp { /* 缺省的模式是内嵌式的*/ public String framework = "embedded"; public String driver = "org.apache.derby.jdbc.EmbeddedDriver"; public String protocol = "jdbc:derby:"; public static void main(String[] args) { new SimpleApp().go(args); } void go(String[] args) { /* 处理参数,确定这个程序作为内嵌式使用还是作为客户端使用*/ parseArguments(args); System.out.println("SimpleApp starting in " + framework + " mode."); try { /* 装载驱动程序,假如是内嵌式模式,这将启动Derby, 因为它还没有运行. */ Class.forName(driver).newInstance(); System.out.println("Loaded the appropriate driver."); Connection conn = null; Properties props = new Properties(); props.put("user", "user1"); props.put("passWord", "user1"); //create=true将创建数据库derbyDB conn = DriverManager.getConnection(protocol +"derbyDB;create=true", props); System.out.println("Connected to and created database derbyDB"); conn.setAutoCommit(false);//设置自动提交模式 Statement s = conn.createStatement(); /* 创建一个表,加入几条记录并更新一条. */ s.execute("create table derbyDB(num int, addr varchar(40))"); System.out.println("Created table derbyDB"); s.execute("insert into derbyDB values (1956,'Webster St.')"); System.out.println("Inserted 1956 Webster"); s.execute("insert into derbyDB values (1910,'Union St.')"); System.out.println("Inserted 1910 Union"); s.execute( "update derbyDB set num=180, addr='Grand Ave.' where num=1956"); System.out.println("Updated 1956 Webster to 180 Grand"); s.execute( "update derbyDB set num=300, addr='Lakeshore Ave.' where num=180"); System.out.println("Updated 180 Grand to 300 Lakeshore"); /* 查询并校验结果. */ ResultSet rs = s.executeQuery( "SELECT num, addr FROM derbyDB ORDER BY num"); if (!rs.next()) { throw new Exception("Wrong number of rows"); } if (rs.getInt(1) != 300) { throw new Exception("Wrong row returned"); } if (!rs.next()) { throw new Exception("Wrong number of rows"); } if (rs.getInt(1) != 1910) { throw new Exception("Wrong row returned"); } if (rs.next()) { throw new Exception("Wrong number of rows"); } System.out.println("Verified the rows"); s.execute("drop table derbyDB");//删除表 System.out.println("Dropped table derbyDB"); rs.close(); s.close(); System.out.println("Closed result set and statement"); conn.commit(); conn.close(); System.out.println("Committed transaction and closed connection"); boolean gotSQLExc = false; if (framework.equals("embedded")) { try { DriverManager.getConnection("jdbc:derby:;shutdown=true");//关闭数据库服务 } catch (SQLException se) { gotSQLExc = true; } if (!gotSQLExc) { System.out.println("Database did not shut down normally"); } else { System.out.println("Database shut down normally"); } } } catch (Throwable e) { System.out.println("exception thrown:"); if (e instanceof SQLException) { printSQLError((SQLException) e); } else { e.printStackTrace(); } } System.out.println("SimpleApp finished"); } static void printSQLError(SQLException e) { while (e != null) { System.out.println(e.toString()); e = e.getNextException(); } } private void parseArguments(String[] args) {进入讨论组讨论。
// System.setProperty("derby.system.home", "c:\\DBdata");//这样可以设置数据库数据的存放目录
int length = args.length; for (int index = 0; index < length; index++) { if (args[index].equalsIgnoreCase("jccjdbcclient")) { framework = "jccjdbc"; driver = "com.ibm.db2.jcc.DB2Driver"; protocol = "jdbc:derby:net://localhost:1527/"; } if (args[index].equalsIgnoreCase("derbyclient")) { framework = "derbyclient"; driver = "org.apache.derby.jdbc.ClientDriver"; protocol = "jdbc:derby://localhost:1527/"; } } } }
下面是如何运行这个程序: 一、怎样在内嵌式环境(集成到桌面应用)中运行这个例子
我的工作目录是c:\java,先将derby.jar复制到c:\java\jar下。再写一个批处理文件run.bat,内容如下:
set CLASSPATH=c:\java\jar\derby.jar;%CLASSPATH%
打开Windows xp的命令行窗口,转入工作目录。运行:
C:\java>run.bat
C:\java>set CLASSPATH=c:\java\jar\derby.jar;
C:\java>javac SimpleApp.java
[]
赞助商链接