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 ...
随机推荐
- Murano Weekly Meeting 2015.08.25
Meeting time: 2015.August.25th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting summ ...
- oracle 中 Start with...connect by 的用法(递归查询)
阿里电面问到了相关的知识,在网上找到这方面的文章. 这几个关键字是查询递归数据的,形成一个树状结构.目前只有oracle支持,其他数据都要结合存储过程实现 语法: select * from some ...
- IDEA部署Express工程
1.下载并安装Nodejs 2.通过Nodejs的NPM工具安装全局安装express工具,命令如下: npm install -g express@XXX npm install -g expres ...
- Zend Optimizer安装、配置
Zend Optimizer用优化代码的方法来提高php应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化.这里,我们下载最新版 ...
- php和java的区别
php和java的区别 前几天有个大学的同学给我来电话,他是在培训java的,然后我们就讨论了一下关于php和java的优劣区别(我们的是初学者,所以下面发表的内容可能不会很精准到位,望体谅): 我们 ...
- C#中实体集合和实体转换成相应的string、XDocument、XElement
C#中实体集合和实体转换成相应的string.XDocument.XElement public class SimpleXmlConverter { public static string ToX ...
- xml schema数据类型
1.简单数据类型 (1)内置简单数据类型 schema中定义了一些简单数据类型,包括primitive原始数据类型和derived派生数据类型,这些类型都是schema中使用的 最基本的数据类型,我们 ...
- InvocationTargetException异常
package com.smbea.demo.reflect; /** * 越界异常 * @author hapday * @date 2017年1月20日 @time下午7:59:01 */ pub ...
- 前端防御XSS
下面是前端过滤XSS的代码,取自于百度FEX前端团队的Ueditor在线编辑器: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function xssCheck(str,r ...
- PHP Regex
<?php //Accpet the http client request and generate response content. //As a demo, this function ...