• 存储过程 jdbc


    package com.itheima.procedure;
    
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.Types;
    
    import org.junit.Test;
    
    import com.itheima.utils.JdbcUtil;
    /**
     * 执行存储过程  用CallableStatement    得到它的对象 st = con.prepareCall(sql);
     *             调用 格式:
     *                     {call 过程名(?,?)}
     * @author wangli
     *
     */
    public class ProcedureTest {
    
        @Test   
        public void testProcedure(){
            Connection con = null;
            CallableStatement st =null;//是pstatement 的子类,预编译sql 防注入,不过不能批量处理不同类的sql语句。
            
            try {
                con = JdbcUtil.getConnection();
                st = con.prepareCall("{call demoSp(?,?)}");//获取CallableStatement  对象
                //两个参数赋值
                st.setString(1, "cgx");//输入参数赋值
                
                //对于过程的输出参数要先注册   Types:java.sql.Types代表的是sql的相应数据类型
                st.registerOutParameter(2, Types.VARCHAR);
                
                //执行存储过程
                st.execute();
                
                String result = st.getString(2);//调用存储过程后,返回的输出参数的值
                
                System.out.println(result);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                JdbcUtil.release(null, st, con);
            }
        }
    }
    package com.itheima.utils;
    
    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;
    
    /**
     * 用于读取配置文件,并获取连接,关闭连接
     * @author wangli
     *
     */
    public class JdbcUtil {
        private static String DRIVER;
        private static String URL;
        private static String USER;
        private static String PASSWORD;
        //1.读取配置文件   只要读一次就可以
        static{
            try {
                //ClassLoader默认读取classes文件夹下的资源
                InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbccfg.properties");
                //2.生成Properties对象
                Properties p = new Properties();
                p.load(is);
                
                //给属性赋值
                DRIVER=p.getProperty("driver");
                URL = p.getProperty("url");
                USER = p.getProperty("user");
                PASSWORD = p.getProperty("password");
                
                //加载驱动
                Class.forName(DRIVER);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 获取数据库连接
         * @return
         * @throws Exception 
         */
        public static Connection getConnection() throws Exception{
            return DriverManager.getConnection(URL, USER,PASSWORD);
        }
        
        /**
         * 关闭资源 
         * @param rs
         * @param st
         * @param con
         */
        public static void release(ResultSet rs,Statement st,Connection con ){
            try {
                if(rs!=null){
                    rs.close();
                    rs=null;//目的是让回收器立即进行垃圾回收
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            try {
                if(st!=null){
                    st.close();
                    st=null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            try {
                if(con!=null){
                    con.close();
                    con=null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        
        }
        
    }

    配置文件信息 

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/day16
    user=root
    password=root

  • 相关阅读:
    二叉树的遍历详解:前、中、后、层次遍历(Python实现)
    结对编程——需求建模
    使用 python 与 sqlite3 实现简易的学生信息管理系统
    PowerShell下, MySQL备份与还原遇到的坑
    自动生成四则运算(python实现) 更新
    自动生成四则运算题目(python实现)
    软件工程导论的感想
    矩阵的秩与行列式的几何意义
    微信好友分布分析
    第一次结队作业
  • 原文地址:https://www.cnblogs.com/baijin05/p/5073251.html
Copyright © 2020-2023  润新知