`
小月峰
  • 浏览: 21183 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java 调用MySQL存储过程简单实现

阅读更多

   最近,在忙着换一份工作,面试的时候,被一个话题卡住了,也许是我之前做的项目没有使用过存储过程吧,所以,就相对来说陌生了,被一个考官问得很失底气,遂我决定研究一番,原来是这么的简单,下文记录一下这个历程,以后看一下就一目了然了

引用

   附件说明
   附件中包含了JDBC使用到的mysql驱动包和小生研究的简单调用代码

引用

   首先是,创建数据库--sqlStudy
  
     CREATE DATABASE sqlStudy;
   

   接着创建表--user
  
     CREATE TABLE user
     (
        id int(10) NOT NULL PRIMARY KEY ATUO_INCREMENT,
        name char(50) NOT NULL
     )
   

插入几条数据
USE sqlStudy;
INSERT INTO user VALUES(id,'first');
INSERT INTO user VALUES(id,'second');
INSERT INTO user VALUES(id,'third');
INSERT INTO user VALUES(id,'fourth');
INSERT INTO user VALUES(id,'fifth');
INSERT INTO user VALUES(id,'sixth');

检验下插入的数据吧:
SELECT * FROM user;

   然后,创建存储过程--findById
   MySQL存储过程语法详见:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html
   DELIMITER //;--这个是设置mysql的分隔符,默认mysql是;
   DROP PROCEDURE IF EXISTS findById//
   CREATE PROCEDURE findById(IN param int)--IN传入参数进来
      BEGIN
           SELECT * FROM user WHERE id = param ;
      END//

如果报错的话,请检查一下语句是否写错了!此时,可以测试一下我们的存储过程:
SET @param=3//
CALL findById(@param);

你会发现,第三条记录出来了!

引用

下面是JAVA中使用JDBC操作存储过程代码
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.CallableStatement;
import com.mysql.jdbc.Connection;


public class CallProcedure {

	private static final String USERNAME = "root";
	private static final String PASSWORD = "";
	private static final String URL = "jdbc:mysql://localhost:3306/sqlstudy";

	public static void call(){
		loadMySqlDriver();
		Connection conn = null;
		CallableStatement cstmt = null;
		ResultSet rs = null;
		try{   
			conn = (Connection) DriverManager
                        .getConnection(URL , USERNAME , PASSWORD);
			//创建调用存储过程的预定义SQL语句
			String sql = "{call findById(?)}";
			//创建过程执行器
			cstmt = (CallableStatement) conn.prepareCall(sql);
			//设置入参
			cstmt.setString(1,"1");
			cstmt.executeUpdate();
			rs = cstmt.getResultSet();
			while(rs.next()){
				int id = rs.getInt(1);
				String name = rs.getString(2);
				System.err.println("取得的id为:"+id+"\n"+"取得的name为:"+name);
			}
		}catch(SQLException se){   
			System.out.println("数据库连接失败!");   
			se.printStackTrace() ;   
		}finally{
			if(rs != null){   // 关闭记录集   
				try{   
					rs.close() ;   
				}catch(SQLException e){   
					e.printStackTrace() ;   
				}   
			}   
			if(cstmt != null){   // 关闭声明   
				try{   
					cstmt.close() ;   
				}catch(SQLException e){   
					e.printStackTrace() ;   
				}   
			}   
			if(conn != null){  // 关闭连接对象   
				try{   
					conn.close() ;   
				}catch(SQLException e){   
					e.printStackTrace() ;   
				}   
			}  
		} 
	}

	/**
	 *  加载MySql驱动
	 */
	public static void loadMySqlDriver(){
		try{   
			//加载MySql的驱动类   
			Class.forName("com.mysql.jdbc.Driver") ;   
		}catch(ClassNotFoundException e){   
			System.out.println("找不到驱动程序类 ,加载驱动失败!");   
			e.printStackTrace() ;   
		}   
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		call();
	}
}



结果:
取得的id为:1
取得的name为:First
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics