JAVA调用数据库存储过程

摘要:
)}")

1.首相给数据库创建一个简单的存储过程:(在这里我是创建的Oracle数据库的存储过程)

create or replace procedure stu_upd(nname varchar2,npassword varchar2) is
begin
update student set name=nname where password=npassword;
end pl_pro;

create or replace procedure stu_del(nid number)is
begin
delete from student where ID=nid;
end stu_del;


create or replace procedure stu_ins(nid number,nname varchar2,npassword varchar2,nage varchar2,nemail varchar2)is
begin
insert into student(id,name,password,age,email) values(nid,nname,npassword,nage,nemail);
end stu_ins;

2.通过JAVA程序与数据库建立连接:

package jdbc;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class BaseDAO {

    private static BasicDataSource ds=null;
    //private static Connection conn=null;
    private static String url;
    private static String user;
    private static String password;
    private static String driverName;
    static{        
        try {
            //1.读取配置文件conf.properties,采用java.util.Properties来读取
            Properties pp=new Properties();
            //2.通过文件流读取并解析配置文件内容,本地数据库用的mysql,所以把配置文件mysql的配置放开,其他数据库配置注释
            pp.load(new FileInputStream("src/jdbc.properties"));
            driverName=pp.getProperty("jdbc.driverClassName");//获取驱动名称                        
            url=pp.getProperty("jdbc.url");//获取数据库的url                                
            user=pp.getProperty("jdbc.username");//用户名                                          
            password=pp.getProperty("jdbc.password");//密码                                    
            int maxActive=Integer.parseInt(pp.getProperty("jdbc.maxActive"));//获取最大连接数         
            int maxWait=Integer.parseInt(pp.getProperty("jdbc.maxWait"));//获取最大等待时间                          
            //3.创建一个连接池                                                                  
            ds=new BasicDataSource();                                                           
            ds.setDriverClassName(driverName);//设置驱动名称                                    
            ds.setUrl(url);//设置数据库地址                                                     
            ds.setUsername(user);//设置用户名                                                   
            ds.setPassword(password);//设置密码                                                 
            ds.setMaxActive(maxActive);//设置最大连接数                                         
            ds.setMaxWait(maxWait);//设置最大等待时间    
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    //第一种加载BasicDataSource进行数据库的连接
    public static Connection getConnection(){        
        try {
            System.out.println("数据库连接成功");
            return ds.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("连接数据库失败");
            return null;
        }        
    }
    //第二种通过传统的DriverManager进行数据库连接
    public static Connection getConnection2(){
        try {
            Class.forName(driverName);
            Connection conn = DriverManager.getConnection(url,user,password);
            return conn;
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
        return null;
    }
    
    
    public static void Close(Connection conn){
        if(conn!=null){                                                                       
            try {                                                                               
                conn.close();                                                                     
            } catch (Exception e) {                                                             
                e.printStackTrace();                                                              
            }                                                                                   
        }
    }
}



3.数据库连接建立完成之后就是调用存储过程操作数据库了:
package main;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

import jdbc.BaseDAO;

public class test {

    /**
     * @param args
     * @throws SQLException 
     * @throws ClassNotFoundException 
     */
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // TODO Auto-generated method stub
        
        //加载数据库的连接
        Connection conn=BaseDAO.getConnection2();
        
        //创建Oracle存储过程的对象,调用存储过程 
       // CallableStatement c=conn.prepareCall("{call pl_pro(?,?)}");
        //c.setString(1, "张三");
        //c.setString(2, "123456");
        //CallableStatement c=conn.prepareCall("{call AAA(?)}");
        //c.setLong(1, 2);
        
        //创建Oracle存储过程的对象,调用存储过程
        CallableStatement c=conn.prepareCall("{call bbb(?,?,?,?,?)}");
        //一次给存储过程传递参数
        c.setLong(1, 5);
        c.setString(2,"李四");
        c.setString(3,"123456");
        c.setString(4, "30");
        c.setString(5, "542178@.com");
        c.execute();
    }

}
 

免责声明:文章转载自《JAVA调用数据库存储过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇「NOI2018」归程A Simple Note on "P4FPGA: A Rapid Prototyping Framework for P4"下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

hibernate数据库配置

在文件夹etc中 ## MySQL #hibernate.dialect org.hibernate.dialect.MySQLDialect #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect #hibernate.dialect org.hibernate.dialect.M...

什么是LMDB闪电记忆映射数据库

LightningMemory-MappedDatabase(LMDB)是一个软件库,它以键值存储的形式提供高性能的嵌入式事务数据库。LMDB是用C语言编写的,具有多种编程语言的API绑定。LMDB将任意键/数据对存储为字节数组,具有基于范围的搜索功能,支持单个键的多个数据项,并具有在数据库末尾附加记录的特殊模式(MDB_APPEND),可提供显着的写入性...

JDBC详解2

day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbutils 事务 事务的四大特性:ACID; mysql中操作事务 jdbc中操作事务 事务概述 为了方便演示事务,我们需要创建一个...

SpringMVC加载配置Properties文件的几种方式

最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定、URL映射的文章都很多了,写这篇博客主要总结一下SpringMVC加载配置Properties文件的几种方式 1.通过context:property-placeholde实现配置文件加载   1.1、在...

Mysql学习总结(36)——Mysql查询优化

从事前端开发的都知道,页面显示的数据一定要及时的呈现,否则会影响用户体现.那么导致页面加载数据慢或者显示滞后的原因又是什么呢? 拿自己之前做项目经历给大家讲讲吧,之前做后台,当时的项目实时性都非常高,前端页面实时显示要求非常高 ,慢1秒显示都会导致用户的投诉,最后没办法,通过本地(磁盘)缓存跟数据表分割来解决这一问题. 原因分析 主要原因1: 后台数据库中...

MSSQL数据库各角色权限

固定数据库角色  描述  db_owner  在数据库中有全部权限。  db_accessadmin  可以添加或删除用户 ID。  db_securityadmin  可以管理全部权限、对象所有权、角色和角色成员资格。  db_ddladmin  可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。  db_backup...