jdbc调用存储过程

JDBC调用存储过程

通用JDBC连接类(简版)

package com.qy.dbUtil;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtil {
    private static String driver=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;

    static{
        try {
            InputStream is= JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(is);
            driver = properties.getProperty("driver").toString();
            url= properties.get("url").toString();
            username= properties.get("username").toString();
            password= properties.get("password").toString();
            Class.forName(driver);
        } catch (IOException e) {
            System.out.println("db.properties文件流加载失败");
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            System.out.println("com.mysql.jdbc.Driver加载类不存在");
            e.printStackTrace();
        }

    }

    /**
     * 获取Connection连接
     * @return Connection
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
            Connection con = DriverManager.getConnection(url, username, password);
            System.out.println("JDBC链接成功");
            return con;
    }

    /**
     * 释放连接
     * @param con
     * @param st
     * @param rs
     */
    public static void release(Connection con,Statement st,ResultSet rs) {
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                System.out.println("ResultSet关闭异常");
                e.printStackTrace();
            }
        }
        if (st!=null) {
            try {
                st.close();
            } catch (SQLException e) {
                System.out.println("Statement关闭异常");
                e.printStackTrace();
            }
        }
        if (con!=null) {
            try {
                con.close();
            } catch (SQLException e) {
                System.out.println("Connection关闭异常");
                e.printStackTrace();
            }
        }
        System.out.println("关闭成功");
    }

    /**
     * 测试连接
     * TODO
     * @param args
     */
    public static void main(String[] args) {
        try {
            Connection con = getConnection();
            release(con, null, null);
        } catch (SQLException e) {
            System.out.println("Connection连接异常");
            e.printStackTrace();
        }
    }
}

jdbc调用存储过程

    public static void main(String[] args) throws SQLException {
        Connection con = JDBCUtil.getConnection(); /*获取连接*/
        /*调用sql语句*/
        //PreparedStatement  cs = con.prepareStatement("insert into lobtable(id,resum,clob) values(?,?,?)");
        /*调用存储过程*/
        CallableStatement cs = con.prepareCall("{call proName(?,?,?,?)}");
        cs.setObject(1, "id1");   //为存储过程设置参数
        cs.setObject(2, "resum2");
        cs.setObject(3, "clob3");
        cs.execute();  //执行存储过程
        JDBCUtil.release(con, cs, null);  /*释放连接*/
    }

JdbcTemplate调用存储过程

涉及内容:org.springframework.jdbc.core.JdbcTemplate、proxool-0.9.1.jar

在web.xml配置springConfig.xml和jdbcproxool.xml路径

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springConfig.xml</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <servlet>
        <servlet-name>proxoolServletConfigurator</servlet-name>
        <servlet-class>
            org.logicalcobwebs.proxool.configuration.ServletConfigurator
        </servlet-class>
        <init-param>
            <param-name>xmlFile</param-name>
            <param-value>WEB-INF/classes/jdbcproxool.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

jdbcproxool.xml

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
   <proxool>
       <alias>demodb</alias>
       <driver-url>jdbc:mysql://127.0.0.1:3306/demo?useUnicode\=true&amp;characterEncoding\=UTF-8</driver-url>
       <driver-class>com.mysql.jdbc.Driver</driver-class>
       <driver-properties>
           <property name="user" value="root"/>
           <property name="password" value="root"/>
       </driver-properties>
       <minimum-connection-count>10</minimum-connection-count>
       <prototype-count>20</prototype-count>
       <maximum-connection-count>60</maximum-connection-count>
       <house-keeping-sleep-time>60000</house-keeping-sleep-time>
       <simultaneous-build-throttle>20</simultaneous-build-throttle>
       <test-before-use>true</test-before-use>
       <house-keeping-test-sql>select now()</house-keeping-test-sql>
       <injectable-prepared-statement-interface>java.sql.PreparedStatement</injectable-prepared-statement-interface>
   </proxool>
</something-else-entirely>

springConfig.xml

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
        <property name="url" value="proxool.demodb"/>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

java调用

@Repository("commonDao")
public class CommonDao {
    @Resource(name = "jdbcTemplate")
    private JdbcTemplate jdbcTemplate;
    /**
     * 调用存储过程(无返回值)
     * TODO
     * @param procedureName 存储过程名
     * @param paramList 参数列表
     */
    public void callProcedure(String procedureName, List paramList) {
        String callProcedureString = "call " + procedureName + "(";
        if (paramList != null && paramList.size() > 0) {
            String paramString = "";
            for (int i = 0; i < paramList.size(); i++) {
                paramString += "‘" + paramList.get(i) + "‘";
                if (i < paramList.size() - 1) {
                    paramString += ",";
                }
            }
            callProcedureString += paramString;
        }
        callProcedureString = callProcedureString + ")";
        this.jdbcTemplate.execute(callProcedureString);
    }
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

原文地址:https://www.cnblogs.com/aeolian/p/10736644.html

时间: 2024-10-17 08:28:04

jdbc调用存储过程的相关文章

Java数据库连接——JDBC调用存储过程,事务管理和高级应用

阅读目录 一.JDBC常用的API深入详解及存储过程的调用1.存储过程(Stored Procedure)的介绍2.JDBC调用无参存储过程3.JDBC调用含输入参数存储过程4.JDBC调用含输出参数存储过程二.JDBC的事务管理1.JDBC实现事务管理2.通过代码实现事物的管理三.数据库连接池(dbcp.c3p0)1.dbcp使用步骤2.c3p0使用步骤3.连接池总结四.JDBC的替代产品(Hibernate.Mybatis)1.Commons-dbutils 2.Hibernate简介3.M

Java数据库连接--JDBC调用存储过程,事务管理和高级应用

相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数) 来执行它.存储过程是数据库中 的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 一个存储过程是一个可编程的函数,它在数据

JDBC调用存储过程的例子

下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员工信息表作为本次的例子: 如果你的Oracle里没有 emp默认的员工表,需要创建类似以下的 emp表. 在PL/SQL中需要写以下的调用存储过程的代码: 1 --在初次打开PL/SQL时要运行以下这行代码 2 set serveroutput on 3 4 5 --存储过程 6 CREATE OR

JDBC学习笔记(12):使用JDBC调用存储过程与批处理

存储过程:是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.    存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 创建存储过程: DELIMITER $$ DROP

jdbc调用存储过程和函数

1.调用存储过程 public class CallOracleProc { public static void main(String[] args) throws Exception{ String sql = "{call get_rax(?,?)}"; Connection conn = JdbcUtil.getConnection(); CallableStatement cstmt = conn.prepareCall(sql); //为第一个?号设置值,从1开始 cst

使用JDBC调用存储过程

1 DELIMITER $$ 2 3 DROP PROCEDURE IF EXISTS `jdbc`.`addUser` $$ 4 CREATE PROCEDURE `jdbc`.`addUser` (in pname varchar(45),in birthday date,in money float,out pid int) 5 BEGIN 6 insert into user(name,birthday,money) value(pname,birthday,money); 7 sele

如何使用 JDBC 调用存储在数据库中的函数或存储过程

JDBC调用存储过程步骤:1 通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例.在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,<a

JDBC 调用存储函数 存储过程

JDBC调用存储过程 步骤: 1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例, 在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串, 该方法指明如何调用存储过程. {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,&

JDBC【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】

1.PreparedStatement对象 PreparedStatement对象继承Statement对象,它比Statement对象更强大,使用起来更简单 Statement对象编译SQL语句时,如果SQL语句有变量,就需要使用分隔符来隔开,如果变量非常多,就会使SQL变得非常复杂.PreparedStatement可以使用占位符,简化sql的编写 Statement会频繁编译SQL.PreparedStatement可对SQL进行预编译,提高效率,预编译的SQL存储在PreparedSta