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
    评论
ODBC(Open Database Connectivity)是一种用于在不同数据库管理系统之间共享数据的开放式标准。ODBC连接Oracle数据库的步骤如下: 1. 安装Oracle客户端软件,这个软件包含了ODBC驱动程序。 2. 配置ODBC数据源,包括指定Oracle数据库的名称、主机名、端口号、用户名和密码等信息。 3. 在程序中使用ODBC API连接Oracle数据库,执行SQL语句或调用存储过程等操作。 下面是具体的步骤: 1. 下载并安装Oracle客户端软件,建议选择与服务器版本相同的客户端版本,以免出现兼容性问题。 2. 打开ODBC数据源管理器(ODBC Data Source Administrator),在“用户DSN”或“系统DSN”选项卡中点击“添加”按钮。 3. 在弹出的“创建新的数据源”对话框中选择“Oracle in OraClient11g_home1”(或其他版本),点击“完成”按钮。 4. 在下一个对话框中输入数据源名称、Oracle服务器名称、端口号和默认用户名等信息,点击“测试连接”按钮测试连接是否成功,然后点击“确定”按钮保存数据源配置。 5. 在程序中使用ODBC API连接Oracle数据库,例如使用C++的ODBC API代码示例如下: ``` #include <windows.h> #include <sqltypes.h> #include <sql.h> #include <sqlext.h> int main() { // 初始化ODBC环境 SQLHENV henv = NULL; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); // 连接Oracle数据库 SQLHDBC hdbc = NULL; SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); SQLCHAR* szDSN = (SQLCHAR*)"OracleDSN"; SQLCHAR* szUID = (SQLCHAR*)"scott"; SQLCHAR* szPWD = (SQLCHAR*)"tiger"; SQLRETURN retcode = SQLConnect(hdbc, szDSN, SQL_NTS, szUID, SQL_NTS, szPWD, SQL_NTS); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { // 连接失败 SQLCHAR sqlstate, message[256]; SQLINTEGER native_error; SQLSMALLINT len; SQLError(NULL, hdbc, SQL_NULL_HSTMT, sqlstate, &native_error, message, 256, &len); printf("Connection failed: %s (%d)\n", message, native_error); } else { // 连接成功,执行SQL语句或调用存储过程等操作 ... // 断开连接并释放资源 SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); } // 释放ODBC环境句柄 SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值