Java实现mysql存储过程调用

      前言:之前用的是VS+SQL Server 现在用的是Myeclipse+Mysql。能实现心里还是挺兴奋的。

存储过程优点:

1、存储过程增强了SQL语言的功能和灵活性。

2、存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。

3、存储过程能实现较快的执行速度。

4、存储过程能过减少网络流量。

优点知道就可以了,不必一字不差的背过,下面来看看如何实战吧!

准备工作:

1、安装Myeclipse

2、安装mysql并创建好mysql存储过程 具体可以看我之前的博客(mysql存储过程)

3、创建java工具类


1、创建java工具类

/**
 * 作者:lxd 
 * 创建时间:2016 M05 14 13:08:32 
 * version 1.0 * @parameter  
 * @since  * @return  
 */
package cn.com.jdbc;

import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public final class JdbcUtil {
	//连接数据库,账号是root,密码是空,数据库名字为dong
	private static String url="jdbc:mysql://localhost:3306/dong";
	private static String user="root";
	private static String password="";
	
	
	private JdbcUtil(){  	
    }
    
    static{
    	try {
    		//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
    	
    }
    public static Connection getConnection() throws SQLException{
    	//注意使用的都是java.sql中的接口
    	
      return DriverManager.getConnection(url,user,password); 	
    }
    public static void free(ResultSet rs,Statement st,Connection conn){
    	try {
			if (rs != null)
				rs.close();
		}catch(SQLException e) {
			e.printStackTrace(); //输出堆栈
		}
    	finally {
			try{
			if(st!=null)
             st.close();
			}catch(SQLException e) {
				e.printStackTrace(); //输出堆栈
			}finally{
			if(conn!=null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace(); //输出堆栈
				}
			}
			}
		}
    }
}

2、创建访问存储过程的Psjava.java类

/**
 * 作者:lxd 
 * 创建时间:2016 M05 28 11:34:10 
 * version 1.0 * @parameter  
 * @since  * @return  
 */
package cn.com.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;


import com.mysql.jdbc.CallableStatement;

public class PsTest {

	/**
	 * @param args
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
          ps();
	}
	static void ps() throws SQLException{

		Connection conn = null;
		CallableStatement cs=null;
		ResultSet rs=null;
		try {
			
			//2、建立连接
			conn=JdbcUtil.getConnection();
			 String sql="{call addUser(?,?,?,?)}";
			 //创建存储过程的对象
			 cs=(CallableStatement) conn.prepareCall(sql);
			//注册输出参数
			 cs.registerOutParameter(4, Types.INTEGER);
			 
			//给存储过程的参数设置值
			 cs.setString(1, "ps name");
			 cs.setDate(2, new java.sql.Date(System.currentTimeMillis()));
			 cs.setFloat(3, 100f);
			//执行存储过程
			 cs.executeUpdate(); 
			 
			 int id=cs.getInt(4);
			 //得到存储过程的输出参数值
			 System.out.println("id="+id);
			
		}finally{
			JdbcUtil.free(rs, cs, conn);
		}
	}

}

3、点击运行,会在控制台上输出结果

Java实现mysql存储过程调用_第1张图片

4、查看刚才插入的结果

Java实现mysql存储过程调用_第2张图片


小结:之前用过SQL Server的存储过程,现在转用mysql的还得在学习学习,不过只是开发工具换了换,思想还是一样的。通过敲这个例子,让我对java数据库的访问有了更加深入的了解。


你可能感兴趣的:(【Servlet】)