Oracle 的jdbc方法
package com.swift.jdbc_oracle; import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import oracle.jdbc.OracleTypes;
import oracle.jdbc.driver.OracleCallableStatement; public class Oracle_jdbc { String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.189.101:1521:orcl";
String username = "scott";
String password = "tiger";
Connection conn =null;
PreparedStatement statement = null;
ResultSet rs = null;
CallableStatement call = null;
OracleCallableStatement oraclecall = null; @Before
public void init() throws ClassNotFoundException, SQLException {
Class.forName(driver);
conn = DriverManager.getConnection(url,username,password);
} //普通查询
public void test() throws ClassNotFoundException, SQLException { String sql="select * from emp";
statement = conn.prepareStatement(sql);
rs = statement.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
System.out.println("Test~~~~~~~~~");
}
//访问单返回值存储过程create or replace procedure getYearSal(eno in number,yearsal out number)
//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
//sql语法格式 {call <procedure-name>[(<arg1>,<arg2>, ...)]}
public void procedure() throws SQLException {
String sql="{call getYearSal(?,?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(1, 7788);
//输出的要注册参数是什么类型
call.registerOutParameter(2,OracleTypes.NUMBER);
call.execute();
//要先查询存储过程再输出结果
double yearsal = call.getDouble(2);
System.out.println(yearsal); }
//访问游标返回值存储过程create or replace procedure getEmps(dno in number,emps out sys_refcursor) public void procedure2() throws SQLException {
String sql="{call getEmps(?,?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(1, 20);
//输出的要注册参数是什么类型
call.registerOutParameter(2,OracleTypes.CURSOR);
call.execute();
//要先查询存储过程再输出结果
Object o = call.getObject(2);
rs=(ResultSet)o;
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
}
//访问游标返回值存储过程(OracleCallableStatement)create or replace procedure getEmps(dno in number,emps out sys_refcursor) public void procedure3() throws SQLException {
String sql="{call getEmps(?,?)}";
oraclecall = (OracleCallableStatement) conn.prepareCall(sql);
//输入的和之前preparestatement一样
oraclecall.setInt(1, 20);
//输出的要注册参数是什么类型
oraclecall.registerOutParameter(2,OracleTypes.CURSOR);
oraclecall.execute();
//要先查询存储过程再输出结果
rs = oraclecall.getCursor(2);
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
}
//访问单返回值存储函数create or replace function x(eno in number) return number
//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} public void function() throws SQLException {
String sql="{?= call x(?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(2, 7788);
//输出的要注册参数是什么类型
call.registerOutParameter(1,OracleTypes.NUMBER);
call.execute();
//要先查询存储过程再输出结果
double yearsal = call.getDouble(1);
System.out.println(yearsal); }
//访问单返回值存储函数create or replace function x(eno in number) return number
//不用这个格式{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}用存储函数select方法
@Test
public void function2() throws SQLException{
String sql="select x(7788) yearsal from dual";//不能多写一个; 写;会报无效字符异常
statement=conn.prepareStatement(sql);
rs= statement.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("yearsal"));
}
} @After
public void close() throws SQLException {
if(rs!=null) {
rs.close();
}
if(statement!=null) {
statement.close();
}
if(conn!=null) {
conn.close();
} } }
需要先把Oracle包倒到项目中ojdbc14-10.2.0.1.0.jar
Oracle 的jdbc方法的更多相关文章
- Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)
一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...
- Oracle使用JDBC进行增删改查 表是否存在
Oracle使用JDBC进行增删改查 数据库和表 table USERS ( USERNAME VARCHAR2(20) not null, PASSWORD VARCHAR2(20) ) a ...
- [转]oracle 11g jdbc jar包在哪个文件目录
oracle 11g jdbc jar包在哪个文件目录 一. 如果装了Oracle数据库的话, 大致是这样的目录: D:\oracle\product\11.2.0\client_1\oui\ ...
- oracle 11g jdbc jar包在哪个文件目录
一. 如果装了oracle数据库的话, 大致是这样的目录: D:\oracle\product\11.2.0\client_1\oui\jlib\classes12.jar 或者 D:\o ...
- maven项目无法导入Oracle的jdbc连接jar包【我】
导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- oracle 表迁移方法 (二) 约束不失效
DB:11.2.0.3.0 在oracle 表迁移方法 (一)中,只是move了一张普通的表,如果表的字段带有主键约束呢 ? [oracle@db01 ~]$ sqlplus / as sysdba ...
- 【转】PLSQL developer 连接不上64位Oracle 的解决方法
PLSQL developer 连接不上64位Oracle 的解决方法 快乐无极 , 2012/06/13 10:10 , 开发文档 , 评论(6) , 阅读(140430) , Via 本站原创 大 ...
- 转:ORACLE的JDBC连接方式:OCI和THIN
oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...
随机推荐
- 【3dsMax安装失败,如何卸载、安装3dMax 2019?】
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- vue脚手架 && 实例
什么是vue脚手架? 即可以快速构建vue项目的工具,通过它,我们可以将vue项目所需要的文件等安装完成. 为什么要是用vue脚手架,优点何在? 因为创建一个vue项目需要很多的依赖,文件的设置等,而 ...
- php验证码处理
//基本步骤 1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor() 2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate() 3, 在指 ...
- HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】
Caocao's Bridges Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- C#获取文件格式图标关联应用程序图标
class SystemIcon { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct SHFIL ...
- sqlserverToXML
--raw模式 以属性的形式展示select * from goods for xml rawselect *from goods for xml raw('goods') --修改节点名称selec ...
- 在UITableView中识别左右滑动,实现上下翻页的功能
目前有三种方案: 1. UIScrollView + UITableView. 实现方法,在UIScrollView中,加入UITableView即可 设置UIScrollView的代理和方法 - ( ...
- 模拟Chrome皮肤
话不多说,先验货: (原始状态) (最大化状态) (对比图) 为自己鼓掌!!! 哈哈,捣鼓2天终于把这个搞出来了!虽然代码一团糟,但是不难理解! 要实现这个功能需要几个组件:DWM,GDI+ 在实现这 ...
- DirectX HLSL 内置函数
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...
- Java -GUI开发九九乘法表
Java GUI开发九九乘法表 (1)实现目标: 利用java自带的awt包,基础控件开发一个九九乘法表,点击可以显示对应的乘法口诀. (2)控件选择: 点击——Button 显示——TextFiel ...