首页 > 学院 > 开发设计 > 正文

简单的JDBC应用程序for Java DB

2019-11-18 15:30:52
字体:
来源:转载
供稿:网友

    今天下载了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



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表