简单的JDBC应用程序for Java DB

今天下载了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/";
            }
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索system
, sqlexception
, derby
, 模式
, out
println
com.sap.db.jdbc.jar、sap dbtech jdbc、jdbc连接db数据库文件、java jdbc、java jdbc mysql,以便于您获取更多的相关知识。

时间: 2024-08-05 18:35:12

简单的JDBC应用程序for Java DB的相关文章

java JDBC 提高程序可移植性

程序 很多java初学者在开始接触JDBC编程的时候,在网上和大部分的教材上都是这样介绍JDBC一般的程序://可以运行的完整程序import java.sql.*; public class DatabaseDemo{ public static void main(String args[]) { Connection con; Statement stmt; ResultSet rs; //load the driver class try {//直接在程序里面写字符串 com.micro

java网络编程-Java写了个简单的网络编程程序,运行没有结果,求解谢谢!

问题描述 Java写了个简单的网络编程程序,运行没有结果,求解谢谢! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.io.PrintWriter; import ja

hibernate简单小程序中报 java.lang.IllegalAccessError错误

问题描述 hibernate简单小程序中报 java.lang.IllegalAccessError错误 我刚开始自学hibernate,跟着视频敲了个小程序,只是实现向数据库employee表中插入一条数据,可是debug运行到 Configuration configuration = new Configuration().configure(); 时就开始抛出 Exception in thread "main" java.lang.IllegalAccessError: tr

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

问题描述 初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点. import java.util.Scanner; class Yanzheng{ private String n; private String p; public void setNa(String na){ this.n = na; } public void setPa(String pa){ this.p = pa; } public String getNa(){ return n;

Java基于UDP协议实现简单的聊天室程序_java

最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆.  先看一下效果:   实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理.  "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着.  看一下代码实现:  1.首先是消息服务器的实现,功能很简单:•将客户端的信息(进

java写出简单的表单程序

这是java程序下 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FormDemo extends HttpServlet{  public void doGet(HttpServletRequest request,HttpServletResponse response){     try{    response.setContentType("text/html;ch

使用pureQuery优化现有的JDBC应用程序

开始之前 pureQuery 简介 IBM Data Studio 产品组合中包括 pureQuery,它是一个高性能数据访问平台 ,旨在简化 Java 数据访问的开发.管理.安全保障和优化.它由开发工具(在 Data Studio Developer 中).一个简单直观的 API 和一个运行时(在 Data Studio purequery Runtime 中)组成. 在优化 DB2 数据的 Java 数据访问和保障访问的安全方面,pureQuery 的主 要优点是开发和部署使用静态 SQL

简单的手工hibernate程序示例_JSP编程

本文讲述了简单的手工hibernate程序示例.分享给大家供大家参考.具体如下: 今天学习了下hibernate,写了个小的手工程序,总结下, 首先创建数据库表: 复制代码 代码如下: create table increment_testr(id bigint not null, name char(10), primary key(id)); eclipse下,新建工程. 新建数据库表的映射,这里使用手工方式完成: IncrementTester.java public class Incr

简单通用JDBC辅助类封装(实例)_java

哎,最近很好久没写点东西了,由于工作的原因,接触公司自己研发的底层orm框架,偶然发现该框架在调用jdbc操作的时候参考的是hibernate 里面的SimpleJdbcTemplate,这里我想到了在大学的时候自己用过的一个简单的jdbc封装,现在我将代码贴出来,和大家一起分享: Config类:读取同一包下的数据库连接配置文件,这样是为了更好的通用性考虑 package com.tly.dbutil; import java.io.IOException; import java.util.