oracle连接数据库测试代码

oracle连接数据库测试代码

/**
 *
 * 说明:
 * (1)本例使用JDBC_ODBC桥进行数据库连接,故此需要ODBC数据源
 * (2)本例中SQL为更新语句,故此使用载体的executeUpdate方法,并且返回受影响记录数
 *  (3) 配置连接ORACLE的odbc数据源ora
 */

//导入所需类包
import java.sql.*;

public class JdbcTestOra2 {

  public static void main(String args[]) {
    try {
      //装载驱动程序
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
      //建立数据库连接
      Connection con = DriverManager.getConnection("jdbc:odbc:ora","scott","tiger");
     
      //创建SQL语句载体
      Statement st = con.createStatement();
     
      //执行SQL语句,接收执行结果
      int rs = st.executeUpdate("update emp set comm=1000");
           
      //处理结果
      System.out.println("修改记录数:"+rs);
     
      //释放数据库资源,注意顺序
      st.close();
      con.close();           
    }
    catch (Exception e) {
      e.printStackTrace(System.out);
    }
  }
}

 

 

/**
 * 说明:
 * (1)本例使用JDBC_ODBC桥进行数据库连接,故此需要ODBC数据源
 * (2)本例中SQL语句载体为可输入参数型,注意参数的表示和赋值
 * (3)本例中SQL为查询语句,故此使用载体的executeQuery方法,并且返回结果集
 *  (4) 配置连接ORACLE的odbc数据源ora
 */

//导入所需类包
import java.sql.*;

public class JdbcTestOra3 {

  public static void main(String args[]) {
    try {
 //装载驱动程序
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
 //建立数据库连接
      Connection con = DriverManager.getConnection("jdbc:odbc:ora","scott","tiger");
     
 //创建可输入参数的SQL语句
      PreparedStatement ps = con.prepareStatement("select * from emp where empno=?");
         
  //为参数赋值,注意下标从1开始
      ps.setInt(1, 7934);
     
      //执行SQL语句,接受结果集
      ResultSet rs = ps.executeQuery();
     
 //处理结果
      while (rs.next()) {
        System.out.println("员工编号:"+rs.getInt("empno"));
        System.out.println("员工姓名:"+rs.getString("ename"));
     }

 //释放数据库资源,注意顺序
      rs.close();
      ps.close();
      con.close();                
    }
    catch (Exception e) {
      e.printStackTrace(System.out);
    }
  }
}

 

 

/**
 * 说明:
 * (1)本例使用JDBC_ODBC桥进行数据库连接,故此需要ODBC数据源
 * (2)本例中SQL语句载体为调用存储过程型,注意参数的表示和赋值,
 *      尤其是OUTPUT参数的注册与值获取
 * (3)本例中涉及到存储过程pro1,其定义如下:
 *                  create or replace procedure add_pro(cs1 number,cs2 number,cs3 out number)
 *                  as
 *                  begin  
 *                      cs3:=cs1/cs2;
 *                  exception
 *                    when others then
 *                       raise_application_error(-20001,'0做除数');  
 *                  end;
 *      该存储过程接受两个int类型输入参数,并将计算结果以输出参数
 *      形式返回
 *  (4) 配置连接ORACLE的odbc数据源ora
 */

//导入所需类包
import java.sql.*;

public class JdbcTestOra4 {

  public static void main(String args[]) {
    try {
      //装载驱动程序
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
      //建立数据库连接
      Connection con = DriverManager.getConnection("jdbc:odbc:ora","scott","tiger");
     
      //创建调用存储过程的载体
      CallableStatement
          cs = con.prepareCall("{call add_pro(?,?,?)}");
         
      //为输入参数赋值,注意下标从1开始
      cs.setInt(1, 33);
      cs.setInt(2, 0);

     
      //声明注册输出参数
      cs.registerOutParameter(3, Types.INTEGER);
     
     
      //执行存储过程
      cs.execute();
     
      //获取输出参数
      int rs = cs.getInt(3);
     
     
      //处理结果
      System.out.println("存储过程执行结果:"+rs);
     
      //释放数据库资源
      cs.close();
      con.close();     
    }
    catch (SQLException ee){
       if (ee.getErrorCode() == 20001)
            System.out.println("0做了除数");
    
    }
    catch (Exception e) {
         System.out.println(e.getMessage());
    }
  }
}

 

 

 

/**
 * 说明:
 * (1)本例使用JDBC_ODBC桥进行数据库连接,故此需要ODBC数据源
 * (2)本例中SQL语句载体调用包中的函数
 * (3)本例中涉及到程序包,其定义如下:
          create or replace package java_refcursor as
       type myrctype is ref cursor return EMP%ROWTYPE;
      function job_listing (j varchar2) return myrctype;
    end java_refcursor;
   
    create or replace package body java_refcursor as
      function job_listing (j varchar2) return myrctype is
        rc myrctype;
      begin
        open rc for select * from emp where job = j;
        return rc;
      end;
    end java_refcursor;
 *     
 *   利用ref cursor返回结果集
 */

//导入所需类包
import java.sql.*;
import java.io.*;

// Importing the Oracle Jdbc driver package makes the code more readable
import oracle.jdbc.*;

 

public class JdbcTestOra5 {

  public static void main(String args[]) {
    try {
      //装载驱动程序
      //JDBC-ODBC桥不支持ref cursor,所以必须使用thin驱动
      Class.forName("oracle.jdbc.driver.OracleDriver");

      //建立数据库连接
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","scott","tiger");

      //创建调用存储过程的载体
      CallableStatement call =
        con.prepareCall ("{ ? = call java_refcursor.job_listing (?)}");


      //执行存储过程
     call.registerOutParameter (1, OracleTypes.CURSOR);
    call.setString (2, "MANAGER");
    call.execute ();
    //取得引用游标
    ResultSet rset = (ResultSet)call.getObject (1);

      //获取存储过程返回的结果集(第一个)
      while (rset.next ())
      System.out.println (rset.getString ("ENAME"));


    
      //释放数据库资源
      rset.close();
      call.close();
      con.close();
    }
    catch (Exception e) {
      e.printStackTrace(System.out);
    }
  }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值