JDBC操作Oracle

来源:互联网 发布:周立功单片机怎么样 编辑:程序博客网 时间:2024/05/17 19:59

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 voidmain(String[]args) throws ClassNotFoundException, SQLException{

      

    Stringusername="scott";//使用scott连接

    Stringpassword = "123"; //密码

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

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

      

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

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

      

    Stringsql="select ename , sal from emp";

    Statementcs = connection.createStatement();

      

    ResultSetrs = cs.executeQuery(sql);

    while(rs.next()){

    Stringname=rs.getString(1);

    intsalary=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 voidmain(String[]args) throws ClassNotFoundException, SQLException{

    Stringusername="scott";//使用scott连接

    Stringpassword = "123"; //密码

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

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

      

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

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

      

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

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

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

    prepareCall.setInt(1,7499);

      

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

    prepareCall.registerOutParameter(2, OracleType.STYLE_INT);

      

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

    intyearSalary=prepareCall.getInt(2);

      

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

    }

    }

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

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

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

      public class OracleTest{

      //oralc查询的基本步骤

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

      Stringusername="scott";//使用scott连接

      Stringpassword = "123"; //密码

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

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

        

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

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

        

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

        

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

      prepareCall.registerOutParameter(1, Types.VARCHAR);

        

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

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

        

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

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

      }

      }

0 0
原创粉丝点击