皮皮网
皮皮网

【种草平台源码】【编辑源码app】【见底反弹源码】oracle java源码

来源:创新源码试验 发表时间:2024-11-13 15:15:25

1.如何在Oracle中使用Java方法 详细�0�3
2.用java将一条数据插入oracle,源码需要查看原数据库中是源码否有此条记录

oracle java源码

如何在Oracle中使用Java方法 详细�0�3

       java 存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。源码这里以 Oracle 为例,源码种草平台源码介绍一下java 存储过程的源码具体用法。 一、源码如何创建java 存储过程? 通常有三种方法来创建java 存储过程。源码 1. 使用oracle 的源码sql 语句来创建: e.g. 使用create or replace and compile java source named "" as 后边跟上java 源程序。要求类的源码方法必须是public static 的,才能用于存储过程。源码 SQL> create or replace and compile java source named "javademo1" 2 as 3 import java.sql.*; 4 public class JavaDemo1 5 { 6 public static void main(String[] args) 7 { 8 System.out.println("hello,源码编辑源码app java demo1"); 9 } } / Java 已创建。 SQL> show errors java source "javademo1" 没有错误。源码 SQL> create or replace procedure javademo1 2 as 3 language java name 'JavaDemo1.main(java.lang.String[])'; 4 / 过程已创建。源码 SQL> set serveroutput on size SQL> call dbms_java.set_output(); --java 语言向控制台输出 SQL> execute javademo1(); --execute 存储过程名称 hello,源码 java demo1 调用完成。 2. 使用外部class 文件来装载创建 Class 文件放置在其他目录下调用方法 e.g. 这里既然用到了外部文件,源码必然要将class 文件放到oracle Server 的见底反弹源码某一目录下边。 public class OracleJavaProc { public static void main(String[] argv) { System.out.println("It's a Java Oracle procedure."); } } SQL> grant create any directory to scott; 授权成功。 SQL> conn 已连接。 SQL> create or replace directory test_dir as 'd:/oracle'; 目录已创建。 using -- 使用 bfile---外部文件 SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS') 2 / Java 已创建。 SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc.main(java.lang.String[])'; 2 / 过程已创建。改写kvm源码 SQL> call testjavaproc(); 调用完成。 SQL> execute testjavaproc; PL/SQL 过程已成功完成。 SQL> set serveroutput on size SQL> call dbms_java.set_output(); 调用完成。 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 addSalGrade(int grade, int losal, int hisal) { System.out.println("Creating new salgrade for EMPLOYEE..."); try { Connection conn = DriverManager.getConnection("jdbc:default:connection:"); String sql = "INSERT INTO salgrade " + "(GRADE,LOSAL,HISAL) " + "VALUES(?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1,grade); pstmt.setInt(2,losal); pstmt.setInt(3,hisal); pstmt.executeUpdate(); pstmt.close(); } catch(SQLException e) { System.err.println("ERROR! Adding Salgrade: " + e.getMessage()); } } } 使用loadjava 命令将其装载到服务器端并编译: D:eclipse3.1workspacedbtest>loadjava -u -v -resolve Or acleJavaProc.java arguments: '-u' '-v' '-resolve' 'OracleJavaProc.java' creating : source OracleJavaProc loading : source OracleJavaProc resolving: source OracleJavaProc 查询一下状态: 连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%'; OBJECT_NAME -------------------------------------------------------------------------------- OBJECT_TYPE STATUS ------------------------------------ -------------- OracleJavaProc JAVA CLASS VALID OracleJavaProc JAVA SOURCE VALID 测试一下存储过程: SQL> create or replace procedure add_salgrade(id number, losal number, hisal num ber) as language java name 'OracleJavaProc.addSalGrade(int, int, int)'; 2 / 过程已创建。 SQL> set serveroutput on size SQL> call dbms_java.set_output(); 调用完成。 SQL> execute add_salgrade(6, , ); Creating new salgrade for EMPLOYEE... PL/SQL 过程已成功完成。 SQL> select * from salgrade where grade=6; GRADE LOSAL HISAL ---------- ---------- ---------- 6 二、如何更新你已经编写的java 存储过程? 假如要往类OracleJavaProc 里添加一个存储过程方法,如何开发? 正确的步骤应该是先dropjava, 改程序,再loadjava。 e.g.修改OracleJavaProc 类内容如下: import java.sql.*; import oracle.jdbc.*; public class OracleJavaProc { // Add a salgrade to the database. public static void addSalGrade(int grade, int losal, int hisal) ...{ System.out.println("Creating new salgrade for EMPLOYEE..."); try ...{ Connection conn = DriverManager.getConnection("jdbc:default:connection:"); String sql = "INSERT INTO salgrade " + "(GRADE,LOSAL,HISAL) " + "VALUES(?,?,?

用java将一条数据插入oracle,需要查看原数据库中是否有此条记录

       需要用两个类来实现,DB类用来加载数据库驱动,建立数据库连接,Opdb类用来查询和插入数据

       OPDB类我只写了测试用的main方法,需要调用DB类来做查询和插入数据的操作

       OPDB.java的源码如下

       public class Opdb {

        public static void main(String[] args) {

        DB db = new DB();

        String sql = "select * from user_info where user_name = '李明'";

        db.doPstm(sql);//查询数据库中是否存在李明的记录

        if(db.geRs()==null)//如果查询的结果为空,则插入数据{

        String sql2 = "inset into user_info values("李明","男","","唱歌")";

        db.doPstm(sql2);//执行插入的sql语句

        }

        db.close;//关闭数据库连接

        }

       }

       DB.java的源代码如下

       package com.yxq.dao;

       import java.sql.Connection;

       import java.sql.DriverManager;

       import java.sql.PreparedStatement;

       import java.sql.ResultSet;

       import java.sql.SQLException;

       public class DB {

        private Connection con;

        private PreparedStatement pstm;

        private String user="username";

        private String password="password";

        private String className="oracle.jdbc.driver.OracleDriver";

        private String url="jdbc:oracle:thin:@localhost:orcl";

        public DB(){

        try{

        Class.forName(className);

        }catch(ClassNotFoundException e){

        System.out.println("加载数据库驱动失败!");

        e.printStackTrace();

        }

        }

        /**创建数据库连接*/

        public Connection getCon(){

        try {

        con=DriverManager.getConnection(url,user,password);

        } catch (SQLException e) {

        System.out.println("创建数据库连接失败!");

        con=null;

        e.printStackTrace();

        }

        return con;

        }

        public void doPstm(String sql,Object[] params){

        if(sql!=null&&!sql.equals("")){

        if(params==null)

        params=new Object[0];

        getCon();

        if(con!=null){

        try{

        System.out.println(sql);

        pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

        for(int i=0;i<params.length;i++){

        pstm.setObject(i+1,params[i]);

        }

        pstm.execute();

        }catch(SQLException e){

        System.out.println("doPstm()方法出错!");

        e.printStackTrace();

        }

        }

        }

        }

        public ResultSet getRs() throws SQLException{

        return pstm.getResultSet();

        }

        public int getCount() throws SQLException{

        return pstm.getUpdateCount();

        }

        public void closed(){

        try{

        if(pstm!=null)

        pstm.close();

        }catch(SQLException e){

        System.out.println("关闭pstm对象失败!");

        e.printStackTrace();

        }

        try{

        if(con!=null){

        con.close();

        }

        }catch(SQLException e){

        System.out.println("关闭con对象失败!");

        e.printStackTrace();

        }

        }

       }

相关栏目:休闲