通过JDBC操作ORACLE数据库实例详解(最常用操作)

原创 2004年06月22日 17:47:00

此例子采用JDBC2.0,和ORACLE9i数据库。数据库位于本机上。采用数据库自带的SCOTT模式。

内附有详细的注释,我想我应该不用多讲了吧

import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.pool.OracleDataSource;

public class JdbcOracle {
  public static void main(String[] args) {

    /**URL格式:drivername:@driver_information
       1,drivername主要有以下两种
       jdbc:oracle:thin (thin驱动程序)
       jdbc:oracle:oci (oci驱动程序)
       2,driver_information
       host_name:port:database_sid
     */

    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String url = "jdbc:oracle:thin:@localhost:1521:ORADB";
    String username = "scott";
    String password = "tiger";
    try {

      /**一、注册驱动程序
          方法一Class.forName("oracle.jdbc.OracleDriver");
       */

      DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

      //二、打开数据库连接
      /**方法一,使用oracle数据源对象?
           oracle.jdbc.pool.OracleDataSource ds=new oracle.jdbc.pool.OracleDataSource();
          ds.setServerName("localhost");
          ds.setDatabaseName("ORADB");   //数据库存名
          ds.setDriverType("oci");  //要使用的JDBC驱动程序(OracleDatasore的扩展)
          ds.setURL("jdbc:oracle:thin:@localhost:1521:ORADB"); //指定数据库的URL(OracleDataSource的扩展)
          ds.setDataSourceName("");     //底层数据源的名称
          ds.setNetworkProtocol("tcp");//用于数据库通信的协议
          ds.setPortNumber(1521);//端口号
          ds.setUser("scott");
          ds.setPassword("tiger");
          Connection conn=ds.getConnection();
       */
      //方法二、使用Drivermanger

      conn = DriverManager.getConnection(url, username, password);

      //设置事务提交模式
      //conn.setAutoCommit(true);
      //若禁止了自动提交模式,那么在关闭Connection对象时会执行一次自动隐式提交,以保证还没有提交的所有DML语句被自动提交

      conn.setAutoCommit(false);

      //三、创建JDBC Statement对象

      stmt = conn.createStatement();

      //PreparedStatement pstmt=conn.prepareStatement("带有参数的SQL语句");
      //CallableStatement cstmt=conn.prepareCall("调用存储过程的语句");
      //四、从数据库获取行
      /**select 语句用executeQuery()
          insert,update,delete语句用executeUpdate()
          若预先不知道要执行的SQL语句类型,那么用execute()
       */

      rs = stmt.executeQuery("select id,name,age,sex,birth from employee");

//五、从数据库获取行

      while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        int age = rs.getInt("age");
        String sex = rs.getString("sex");
        Date birth = rs.getDate("birth");
      }
      //rs.close();
      //六、向数据库中添加行(注:月份的编码是从0开始的,因此月份1代表2月)

      java.sql.Date date = new java.sql.Date(82, 10, 05);
      int i = stmt.executeUpdate("insert into employee values" +
                                 "(1,'qds',22,'1',TO_DATE(date,'YYYY,MM,DD'))");
      //七、修改数据中的行

      int j = stmt.executeUpdate("update employee set age=21 where id=1");
      //八、从数据库中删除行

      int k = stmt.executeUpdate("delete from employee set id=1");
      //九、处理数据库的NULL值方法一:使用结果集对象的wasNull方法判断

      conn.commit();
      rs = stmt.executeQuery(
          "select id,type_id,prod_name from product where id=1");

      //此次假设type_id列为Null值
      System.out.println("id=" + rs.getInt("id"));
      System.out.println("type_id=" + rs.getInt("type_id"));
      if (rs.wasNull()) {
        System.out.println("type_id was null!");
      }
      System.out.println("prod_name=" + rs.getString("prod_name"));

      //九、处理数据库的NULL值方法二:使用JAVA包装器类.因为JAVA包装器类可以赋于NULL值
      //java.lang.Integer typeId=(java.lang.Integer)rs.getObject("type_id");
      //System.out.println(typeId);此时typeId的值为Null
      //在向数据库插入或更新某一行为NULL值时,也可以使用JAVA包装器对象
      //java.lang.Double price=null;
      //int ii=stmt.executeUpdate("update products set price="+price+" where id=12");

      rs.close();

      //十,执行数据定义语言语句(DDL:CREATE,ALTER,DROP)----采用execute()方法执行DDL语句
      //执行DDL语句会导致一次隐式提交,因此,如果你在发出DDL语句之前执行了一些未提交的DML语句,那么这些DML语句将被提交

      boolean result = stmt.execute("create table customers(" +
          "id integer constraint customers_pK primary key," +
          "first_name varchar2(10) not null," +
          "last_name  varchar2(10) not null," +
          "dob        date," +
          "phone      varchar2(15)" +
          ")"
          );
      if (result == true) {
        System.out.println("The table has Created!");
      }
      else {
        System.out.println("The table hasn't Create");
      }
      //-------------------------------------------------------------------------   
    }
    catch (Exception e) {
      System.out.println("error: " + e);
      try {
        conn.rollback();
      }
      catch (SQLException sqle) {}
    }
    finally {

      try {
        if (rs != null)
          rs.close();
      }
      catch (SQLException sqle) {
        System.out.println("SQLState: " + sqle.getSQLState());
        System.out.println("SQLErrorCode: 错误代码" + sqle.getErrorCode());
        System.out.println("SQLErrorMessage:错误情况的字符串 " + sqle.toString());
      }

      try {
        if (stmt != null)
          stmt.close();
      }
      catch (SQLException sqle1) {
        System.out.println("SQLState: " + sqle1.getSQLState());
        System.out.println("SQLErrorCode: 错误代码" + sqle1.getErrorCode());
        System.out.println("SQLErrorMessage:错误情况的字符串 " + sqle1.toString());
      }

      try {
        if (conn != null)
          conn.close();
      }
      catch (SQLException sqle2) {
        System.out.println(sqle2.toString());
        System.out.println(sqle2.getSQLState());
        System.out.println(sqle2.getErrorCode());
      }

    }

  }
}

Myeclipse中链接Oracle并实现简单查询-JDBC

Driver template:选择Oracle(Thin driver)    Driver name: 最好与Driver classname:中一样 可copy    Connection UR...
  • Max_WLS
  • Max_WLS
  • 2016年10月30日 16:58
  • 2465

JDBC连接Oracle数据库实例

本文给出一个通过JDBC连接Oracle数据库的实例,希望对JDBC初学者有所帮助。我没有像很多例子那样一个函数就把整个JDBC的操作全部完成,这样的代码在企业的项目开发中一般是不能通过审核的,我现在...
  • Tendency_Yang
  • Tendency_Yang
  • 2016年07月30日 16:18
  • 2919

利用springmvc和jdbcTemplate搭建一个对数据库操作的小例子

在接触到struts2+hibernate+spring三大框架搭建的项目时觉得对于比较简单的项目会显得很繁重,特别是struts现在使用的也不是很广泛,所以我通过网上的部分资料以及对spring的一...
  • maodoubi
  • maodoubi
  • 2015年09月07日 16:17
  • 7512

jdbc操作oracle数据库(增删改查)

  • 2011年08月28日 23:04
  • 36KB
  • 下载

C# Oracle数据库操作类实例详解

这篇文章主要介绍了C# Oracle数据库操作类实例,进行数据库操作时很有实用价值,需要的朋友可以参考下 本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracl...
  • qq_27317147
  • qq_27317147
  • 2016年07月27日 11:27
  • 342

如何利用JDBC连接并操作Oracle数据库

之前学习.NET的时候,曾经利用ODBC进行连接数据库,而在Java中通常采用JDBC连接数据库,这里以oracle数据库为例简单的总结一下利用JDBC如何连接并操作数据库。 1、连接 publi...
  • wangyy130
  • wangyy130
  • 2015年08月24日 11:23
  • 10020

JDBC_使用ResultSet 执行查询操作(基于oracle数据库)

上篇文章已经使用Statement实现了对数据库的增删改操作,接下来使用ResultSet结果集执行查询操作 步骤如下: ResultSet:结果集.封装了使用JDNC进行查询的结果 1.调用S...
  • chance2015
  • chance2015
  • 2015年12月27日 15:07
  • 2856

JDBC--实现用java连接oracle数据库的操作(简单实用)

在网上找了好多JDBC连接方法,试了又试总是有问题,最后结合好多方法,终于发现了一个简单的连接步骤,分享给大家。...
  • chenze666
  • chenze666
  • 2016年05月07日 16:34
  • 210

使用jdbc操作Oracle数据库

使用jdbc操作数据库步骤是固定的 1.将驱动包导入到数据库,每一个数据库的驱动包都不一样,下面我提供一个Oracle数据库的驱动包 http://download.csdn.net/detail...
  • hncsy403
  • hncsy403
  • 2012年08月28日 12:22
  • 1918

jdbc操作非中文字符集oracle数据库导致的中文字符读写乱码的解决方案

oracle数据库向来是一个麻烦的数据库,要不它的DBA怎么就那么值钱呢,呵呵。中文的乱码问题也是一个比较头疼的问题,在odbc的连接中,可以通过设置客户端的字符集(修改注册表)来解决中文问题。而通过...
  • huangyuanmu
  • huangyuanmu
  • 2013年11月18日 13:23
  • 1802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过JDBC操作ORACLE数据库实例详解(最常用操作)
举报原因:
原因补充:

(最多只允许输入30个字)