如何在Oracle中使用Java存储过程

如题所述

分享咱的代码,这是最基本的版本,还有更好的

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* Load JDBC Driver
* 最基本的方法通过JDBC连接数据库
* @author Jacob
*
*/
public class LoadByPrimary {

public static void main(String[] args) throws ClassNotFoundException
{
String driver = "oracle.jdbc.OracleDriver";
Connection cn = null;
/**
* Class.forName手动加载一个类到方法区,Driver类中包含自动注册驱动的静态代码块
* 会自动在DriverManager中注册驱动
*/
Class.forName(driver);
String url = "jdbc:oracle:thin:@localhost:1521:ORACLE"; //1521代表端口号,默认的
String user = "用户名";
String pwd = "密码";
try
{
/*
* Connection是接口,返回值是一个引用对象,是Oracle驱动提供实现类ojdbc7.jar
* 使用JDBC API接口,实际上是驱动实现类
*/
cn = DriverManager.getConnection(url,user,pwd);
Statement stmt = cn.createStatement();
String sql = "SELECT * FROM stu_emp WHERE deptno =10";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getInt("empno")+" "+
rs.getString("ename")+" "+
rs.getString("job"));
}
rs.close();
stmt.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(cn!=null)
{
cn.close();
}
}
catch (SQLException e2)
{
e2.printStackTrace();
}
}
}
}
这是通过preparedstatement实现更新数据,这里咱把连接数据库的方法进行了封装,每次直接调用了。
public static void main(String[] args)
{
PreparedStatementDemo psd = new PreparedStatementDemo();
psd.updateSalary("JACOB",3000);
psd.selectSalary("JACOB");
}

public void updateSalary(String ename,double sal)
{
String sql = "Update stu_emp set sal= ? Where ename = ?";
Connection cn = null;
PreparedStatement ps = null;
try
{
cn = DBPUtil.getConnection();
ps = cn.prepareStatement(sql);
ps.setDouble(1, sal);
ps.setString(2, ename);
int num = ps.executeUpdate();
System.out.println("提示:总共有 "+num+" 条数据已经更新!");
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.stmtClose(ps);
DBUtil.connClose(cn);
}
}

public void selectSalary(String name)
{
String sql = "Select * From stu_emp Where ename = ?";
Connection cn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
cn = DBPUtil.getConnection();
ps = cn.prepareStatement(sql);
ps.setString(1, name);
rs = ps.executeQuery();
while(rs.next())
{
System.out.println(rs.getString("ename")+" 的工资是: "+ rs.getInt("sal"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.stmtClose(ps);
DBUtil.rsClose(rs);
DBUtil.connClose(cn);
}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

如何在Oracle中使用Java存储过程
SQL> execute testjavaproc; It's a Java Oracle procedure.3. 我推荐的一种方法,直接使用loadjava命令远程装载并创建。先创建一个类, e.g.import java.sql.*; import oracle.jdbc.*; public class OracleJavaProc { \/\/Add a salgrade to the database. public static void addSa...

如何在Oracle数据库中使用Java存储过程
SQL> create or replace directory test_dir as d:\\oracle ;目录已创建 SQL> create or replace java class using bfile(test_dir OracleJavaProc CLASS )\/ Java 已创建 SQL> create or replace procedure testjavaproc as language java name OracleJavaProc main(java lang String[]) ;\/ 过程已...

如何在ORACLE中使用JAVA存储过程
create or replace procedure queryempinfo(eno in number,pename out varchar2,psal out number,pjob out varchar2)as begin --得到该员工的姓名 月薪和职位 select ename, sal, job into pename, psal, pjob from emp where empno = eno;end;Java调用Oracle的存储过程 try { Class.forName(...

在java中怎么调用oracle的存储过程
java下实现调用oracle的存储过程和函数 在oracle下创建一个test的账户,然后按一下步骤执行:1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES(RIC VARCHAR(6) PRIMARY KEY,PRICE NUMBER(7,2),UPDATED DATE );2.插入测试数据:--插入数据 INSERT INTO stock_prices values('1111',1.0...

求java调用oracle存储过程
一:无返回值的存储过程 存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA;然后呢,在java里调用时就用下面的代码:package com.hyq.src;import java.sql.*;import java...

求使用Java编写oracle的存储过程
1.有安全限制,毕竟是在oracle内部运行的,不允许访问操作系统的资源,如文件。2.获取数据库联接方式,connection = new OracleDriver().defaultConnection();3.System.out,System.err,System.in等输入输出有所不同。可以利用某些命令重定向。下面是用Java source写一个存储过程和函数的例子。1.在plsql...

JAVA调用存储过程,Oracle自定义类型作参数怎么写法
(1) 在Oracle中定义数组类型idArray (2) 在java构造数组并转换成Oracle中定义的数组类型,调用存储过程 \/** * 当要删除图书时,检查是否仍然有图书复本处于借出状态 *\/ public boolean checkBookStatus(String[] bookIds) throws DataAccessException { boolean flag = false; Connection conn = ...

java程序在调用oracle的存储过程时 能不能传入一个数组
在存储过程中使用自定义类型NESTEDARRAY。PROCEDURE GET_ARR_RESULT(INPUTARRAY IN NESTEDARRAY, AR OUT NESTEDARRAY) IS BEGIN AR := NESTEDARRAY();FOR I IN 1 .. INPUTARRAY.COUNT LOOP AR.EXTEND;AR(I) := I|| INPUTARRAY(I);END LOOP;END GET_ARR_RESULT;Java代码:import java.sql....

java字符串数组作为参数传递oracle存储过程
用字符串传。先组成一个字符串,比如多个值之间用逗号分隔开,传进去之后再按照分隔符分成数组,应该是一个办法。

JavaJDBC连接Oracle实现对数据库增删改变做存储过程调用。 怎么做啊...
一个用来处理逻辑操作,一个用来增加,修改界面,一个用来处理增加,修改逻辑。主界面类用3个panle,北,中,南,上面放查询控件,查询按钮,中间放table,下面放其他按钮。将主界面类作为逻辑处理操作类的一个属性。让他能访问到主界面类中相应的控件。写上对于的控件事件出来就可以了。

相似回答