在Eclipse中通过JDBC连接Oracle数据库并操作

一、JDBC释义

  JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。

二、JDBC连接Oracle数据库的流程及原理

1)在开发环境中加载指定数据库的驱动程序。

  本例使用的开发环境是Eclipse(Luna),数据库是Oracle,Oracle支持JDBC的驱动在下载时已经自带,在本地的安装位置\product\11.2.0\dbhome_1\jdbc\lib中,文件名为ojdbc14.jar。

2)在Java程序中加载驱动程序。

  使用Class.forName("指定数据库的驱动程序")方法加载上述步骤添加的驱动程序。

  示例: Class.forName("oracle.jdbc.driver.OracleDriver");

3)创建数据连接对象。

  通过DriverManager类创建数据库连接对象connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,通过它的getConnection()方法,根据数据库的URL、用户名和密码,创建一个JDBC Connection对象。

  示例: Connection connection = DriverManager.getConnection("URL","用户名","密码");

  其中 URL = 协议名 + IP地址(域名) + 端口 + 数据库名称;

  如: URL = jdbc:oracle:thin:@localhost:1521:orcl;

4)创建Statement对象。

  Statement类用于执行静态SQL语句并返回它所生成的结果。通过Connection接口中的createStatement()方法可以创建一个Statement对象。

  示例: Statement statement = connection.createStatement();

5)调用Statement对象方法执行SQL语句。

  execuUpdate()方法用于数据更新,包括插入、删除等操作。

  示例: statement.execuUpdate("INSERT INTO table(column1(,column2,...))" + "VALUES(‘x‘(,‘y‘,z,...))");

  通过调用Statement对象的executeQuery()方法查询数据,查询结果会返回到ResultSet对象,ResultSet对象是执行查询数据库后返回的数据的集合,它具有可以指向当前数据行的指针,通过ResultSet对象的next()方法使得指针指向下一行,然后将数据以列号或者字段名取出。如果next()方法返回null,则表明下一行中没有数据存在。

  示例: ResultSet resultset = statement.executeQuery("SELECT * FROM table (WHERE)(ORDER BY)");

6)关闭数据库连接。

  使用完数据库或者不需要访问数据库时,通过Connection的close()方法及时关闭数据连接。

三、JDBC应用示例

1)在Eclipse中创建一个新Java项目,创建好包和类。

2)在项目上右键Properties,左栏选择Java Build Path,右栏上侧选择Libraries,然后点击Add External JARS...选择Oracle安装路径\product\11.2.0\dbhome_1\jdbc\lib中的ojdbc14.jar加载。

3)连接数据库的程序示例如下:

 

package zapp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.ResultSetMetaData;

public class App {
    //定义成员变量
    private String user;
    private String password;
    private String url;
    private static Connection conn;

    private ResultSet rs;
    private Statement sm;

    /**
    * 构造函数获得数据库用户名和密码
    * @param user
    * @param password
    */
    public App(String user , String password){
        this.user = user;
        this.password = password;
        /*url="[连接方式jdbc]:[连接到oracle]:[采用瘦模式(无需oracle客户端)]:
        [连接本机:端口1521:数据库名为orcl]"*/
        this.url = "jdbc:oracle:thin:@localhost:1521:orcl";

    }

    /**
    * 创建连接数据库方法
     * @return
    */
    public Connection createConnection(){
        try{
            //初始化驱动包
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //根据数据库连接字符、用户名和密码给conn赋值
            conn = DriverManager.getConnection(url,user,password);
        }catch (Exception e) {
            e.printStackTrace();
        }
        //测试是否成功连接oracle数据库
        if (conn == null){
            System.out.println("与Oracle数据库连接失败!");
        }else{
            System.out.println("Oracle数据库已连接!");
        }
        return conn;
    }

    /**
    * 关闭数据库
    * @param conn
    */
    public void closeConnection(Connection conn){
        try{
            if (conn != null){
                conn.close();
                System.out.println("数据库已关闭!\n");
            }
        }catch(Exception e){
            System.out.println("数据库关闭失败!");
            e.printStackTrace();
        }
    }

    /**
    * 插入数据
    * @param insert
    * @return
    */
    public int insert(String insert){
        int re = 0;
        try{
            conn.setAutoCommit(false);
            sm = conn.createStatement();
            re = sm.executeUpdate(insert);
            if (re < 0){        //插入失败
                conn.rollback();
                sm.close();
                return re;
            }
            else {
                System.out.println("数据成功写入!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 删除数据
     * @param delete
     */
    public int delete(String delete){
        int re = 0;
        try{
            sm = conn.createStatement();
            re = sm.executeUpdate(delete);
            if (re < 0){
                conn.rollback();
                sm.close();
                closeConnection(conn);
                return re;
            }
            else {
                System.out.println("数据成功删除!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return 0;
    }

    /**
    * 查询语句
    * 返回结果集
    * @param select
    * @return
    */
    public ResultSet selectSql(String select){
        try{
            sm = conn.createStatement();
            rs = sm.executeQuery(select);
            return rs;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
    * 根据结果集输出
    * @param rs
    */
    public void printRs(ResultSet rs){
        int columnsCount = 0;
        boolean f = false;
        try{
            if (!rs.next()){
                return;
            }
            ResultSetMetaData rsmd = rs.getMetaData();
            columnsCount = rsmd.getColumnCount();                //根据集的列数
            System.out.println("数据库查询结果如下:");
            for (int i = 0 ; i < columnsCount ; i++ ){
                System.out.print(rsmd.getColumnLabel(i+1)+" ");    //输出列名
            }
            System.out.println();
            while (!f){
                for (int i = 0; i < columnsCount ; i++ ){
                    System.out.print(rs.getString(i+1)+" ");
                }
                System.out.println();
                if (!rs.next()){
                    f = true;
                }
            }
            rs.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /*主方法*/
    public static void main(String[] args){
        //实例化对象aJDBC,传递用户名和密码
        App JDBC = new App("用户名","密码");
        conn = JDBC.createConnection();
        //向salary(已存在)表中插入数据
        String insert = "INSERT INTO salary(empid,empname,empsalary,hiredate,job) "
                + "VALUES(5,‘Jack‘,2300.64,to_Date(‘19920523‘,‘YYYYMMDD‘),‘teacher‘)";
        String delete = "DELETE FROM salary WHERE empid=5";
        String select = "SELECT * FROM salary";
      //查询新增数据后的表
        JDBC.insert(insert);
        JDBC.printRs(JDBC.selectSql(select));

        //查询删除数据后的表
        JDBC.delete(delete);
        JDBC.printRs(JDBC.selectSql(select));
        JDBC.closeConnection(conn);
        }
}
时间: 2024-12-26 08:38:22

在Eclipse中通过JDBC连接Oracle数据库并操作的相关文章

Java中通过JDBC连接Oracle数据库

通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path: 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA”文件,打开找到对应数据库的连接字符串,作为jdbc的连接字符串: 第三步:写代码,通过jdbc连接数据库. 从网上找了段代码,做了下修改.以下为查询数据库表中所有字段及字段值类型,遍历数据库表中所有数据(其中xxx均为需要替换的信息): import java.sql.Connection; imp

JDBC连接Oracle数据库

我记得大二的时候,我们上java课程,当时老师就说了JDBC这个东西,也没怎么好好学,直到现在,我也不直到JDBC是什么玩意,就知道这玩意可以从数据库提取数据,那么JDBC到底是什么呢? JDBC是Java DataBase Connectivity的缩写,含义意思是java数据库连接,不需要多解释了,我感觉! 那么我们如何去做这样子的一个连接呢?用过一次之后就会发现,其实很简单,记住几个步骤,还有就是导入必要的驱动包就可以了,下面是几个重要的步骤: 第一步,你的项目环境中必须要导入必要的数据库

java程序通过jdbc连接oracle数据库方法

1.  赋予scott用户连接权限:Grant connect to scott: 2.   在Myeclipse中新建java项目导入jdbc包(classes12.jar):        右键项目 bulid path -〉add external archives 选择classes12.jar 3.   新建java文件, lianxi01.java import java.sql.Connection; import java.sql.ResultSet; import java.s

JAVA通过JDBC连接Oracle数据库详解【转载】

JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.html Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver"; Class.forName("驱动类名"); 2.获得连接 数据库地址: URL="jdbc:oracle:thi

在Eclipse中使用JDBC访问MySQL数据库的配置方法

在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据库eclipsewordpressproperties 这是一篇JDBC的使用入门文章,主要内容是如何在Eclipse中使用MySQL的JDBC驱动程序. 要使用JDBC访问MySQL的数据库,或者是其他类型的数据库,必须要有这种数据库系统的JDBC驱动程序.通常,JDBC驱动程序是由数据库开发商制

jdbc连接oracle数据库字符串

jdbc连接oracle数据库有两种方式: 连接数据库SID 连接数据库service_name 当连接SID时,字符串如下: url="jdbc:oracle:thin:@192.168.56.100:1521:orcl1" password="xxxx" username"scott" 当连接SERVICE_NAME时,字符串如下: url="jdbc:oracle:thin:@//192.168.56.100:1521/orcl&

JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库

首先是JDBC 连接Oracle  数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DBConnection { private static Connection conn; private static String userName = "scott"; private static String passWord = "tiger"; privat

利用JDBC连接Oracle数据库(转)

http://blog.csdn.net/wahaha1_/article/details/8512438 JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员

JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0.1.0 数据库的时候出现了下列错误: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) 而直接通过plsql可以正常连接数据库,或