JDBC操作Oracle

JDBC操作Oracle涉及的包

java.sql.Connection;

java.sql.DriverManager;

java.sql.ResultSet;

java.sql.SQLException;

java.sql.Statement;

JDBC操作Oracle知识点梳理

  • Oracle包的位置:product\11.2.0\dbhome_1\jdbc\lib
  • JDBC操作Oracle的过程与MySql类似
  • 存储过程的调用语句:{call 存储过程名称(参数1,参数2)}
  • 存储函数的调用语句: {返回值=call 存储函数名称(参数1,参数2)}

      

  • JDBC操作Oracle步骤
    • 加载驱动包

      去这里寻找Oracle的驱动包:product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar

    • 创建用户信息字符串

      创建用户名与密码

    • 加载驱动类

      oracle.jdbc.driver.OracleDriver

    • 数据库url

      jdbc:oracle:thin:@localhost:1521:orcl

    • 创建数据库连接,利用连接完成数据库的CRUD操作
    • 关闭各个资源
  • JDBC操作数据库的简单示例

    public class OracleTest {

    //oralc查询的基本步骤

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

      

    String username="scott"; //使用scott连接

    String password = "123"; //密码

    String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串

    String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL

      

    Class.forName(driver);//根据驱动类,获取字节码文件

    Connection connection = DriverManager.getConnection(url,username,password);//创建连接

      

    String sql="select ename , sal from emp";

    Statement cs = connection.createStatement();

      

    ResultSet rs = cs.executeQuery(sql);

    while(rs.next()){

    String name=rs.getString(1);

    int salary=rs.getInt(2);

    System.out.println(name+"的工资是:"+salary);

    }

      

    rs.close();

    cs.close();

    connection.close();

    }

    }

  • JDBC调用存储过程
    • 存储过程的调用语句

      {call 存储过程名称(参数1,参数2)}

    • 调用存储过程涉及的API


数据库连接对象
.prepareCall("{call 存储过程名称(参数1,参数2)}")

调用存储过程

返回参处过程对象


存储过程对象
.setInt(设置哪一位的占位符,该占位符的值);

设置参数为int类型的占位符的值

无返回值


存储过程对象
.
registerOutParameter(占位符,输出参数类型)

设置输出参数

无返回值

存储过程对象.execute()

执行存储过程

存储过程对象.getInt(获取哪一位占位符的值)

获取输出参数的值

  • 调用存储过程示例:要实现该示例,Oracle 中,要存在一个名称为p_yearSalary(?,?)的存储过程

    public class OracleTest {

    //oralc查询的基本步骤

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

    String username="scott"; //使用scott连接

    String password = "123"; //密码

    String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串

    String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL

      

    Class.forName(driver);//根据驱动类,获取字节码文件

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

      

    //获取名称为p_yearSalary(?,?)的存储过程,他有两个参数

    CallableStatement prepareCall = conn.prepareCall("{call p_yearSalary(?,?)}");

    //获取第一个占位符,并设置该占位符的参数。第一个参数是输入参数

    prepareCall.setInt(1,7499);

      

    //第二个参数是输出参数,要用特有的方法,并设置该参数的类型

    prepareCall.registerOutParameter(2, OracleType.STYLE_INT);

      

    prepareCall.execute();//执行存储过程

    int yearSalary=prepareCall.getInt(2);

      

    System.out.println("年薪是:"+yearSalary);

    }

    }

  • JDBC调用存储函数
    • 存储函数的调用语句

      {返回值=call 存储函数名称(参数1,参数2)}

    • 注意事项:
      • 存储函数与存储过程的调用方法一样;唯一的不同只在调用语句上
    • 存储函数示例:Oracle 中,要存在一个名称为f_emplyeeName(?)的存储函数

      public class OracleTest {

      //oralc查询的基本步骤

      public static void main(String[] args) throws ClassNotFoundException, SQLException {

      String username="scott"; //使用scott连接

      String password = "123"; //密码

      String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串

      String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL

        

      Class.forName(driver);//根据驱动类,获取字节码文件

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

        

      CallableStatement prepareCall = conn.prepareCall("{?=call f_emplyeeName(?)}");

        

      //第一个参数是返回值,设置返回值的类型为字符串

      prepareCall.registerOutParameter(1, Types.VARCHAR);

        

      prepareCall.setInt(2,7499); //获取第二个占位符,并设置该占位符的参数

      prepareCall.execute();//执行存储函数

        

      String name=prepareCall.getString(1);//获取第一个占位符的返回值

      System.out.println("姓名是:"+name);

      }

      }

安装教程 eclipse中maven 下载不到oracle数据库驱动 ojdbc5 ojdbc6 需要我们手动将驱动安装到本地仓库 https://blog.youkuaiyun.com/az44yao/article/details/87773714 参考地址: http://www.oracle.com/technetwork/cn/articles/oem/jdbc-112010-094555-zhs.html 针对所有平台的 JDBC 瘦客户端 ojdbc5.jar (1,996,228 字节)— 用于 JDK 1.5 的类。它包含 JDBC 驱动程序类,但不包含在 Oracle Object 和 Collection 类型中支持 NLS 的类。 ojdbc5_g.jar (3,081,328 字节)— 与 ojdbc5.jar 一样,除了类通过“javac -g”编译并包含跟踪代码。 ojdbc6.jar (2,111,220 字节)— 用于 JDK 1.6 的类。它包含 JDBC 驱动程序类,但不包含在 Oracle Object 和 Collection 类型中支持 NLS 的类。 ojdbc6_g.jar (3,401,519 字节)— 与 ojdbc6.jar 一样,除了通过“javac -g”编译并包含跟踪代码。 ojdbc5dms.jar (2,429,777 字节)— 与 ojdbc5.jar 一样,除了包含支持 DMS 和有限的 java.util.logging 调用的工具。 ojdbc5dms_g.jar (3,101,875 字节)— 与 ojdbc5_g.jar 一样,除了包含支持 DMS 的工具。 ojdbc6dms.jar (2,655,741 字节)— 与 ojdbc6.jar 一样,除了包含支持 DMS 和有限的 java.util.logging 调用的工具。 ojdbc6dms_g.jar (3,423,263 字节)— 与 ojdbc6_g.jar 一样,除了包含支持 DMS 的工具。 orai18n.jar (1,656,280 字节)— 用于 JDK 1.5 和 1.6 的 NLS 类。它包含在 Oracle Object 和 Collection 类型中支持 NLS 的类。该 jar 文件代替旧的 nls_charset jar/zip 文件。 demo.zip (603,363 字节)— 包含 JDBC 示例程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值