`
zds420
  • 浏览: 198425 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JAVA操作存储过程2

    博客分类:
  • JDBC
 
阅读更多
package com.saas.jdbc;

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

public class TestProcedureDemo02 {
	public static String _URL="jdbc:mysql://127.0.0.1:3306/shopping_thpad_com?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true";
	
	public static String _LOGIN_NAME="root";
	
	public static String _LOGIN_PASSWORD="123456";
	
	private static Connection connect = null;
	
	private CallableStatement cstmt =null;
	
	private ResultSet rs = null;
	
	/**
	 * 连接数据库
	 * @return
	 */
	public static Connection getConnection() {
		try {

			Class.forName("com.mysql.jdbc.Driver");
		}
		catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			connect = DriverManager.getConnection(_URL, _LOGIN_NAME, _LOGIN_PASSWORD);
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
		return connect;
	}
	
	/**
	 * execute() 执行存储过程,且存储过程返回一个结果集
	 * 
	 * 当存储过程返回一个结果集时,只需遍历该结果集便可以得到存储过程执行的所有结果
	 */
	public void execCall() {
		connect = getConnection();
		try {
			cstmt = connect.prepareCall("{call proc_stats_buyer()}");
			boolean isOneResultRets=cstmt.execute();	//执行存储过程
			rs = cstmt.getResultSet();	//获取存储过程返回的一个结果集合
			
			while(rs.next()) {
				System.out.println(rs.getString(1)+"====="+rs.getString(2)+"====="+rs.getString(3)+"======"+rs.getString(4)); 
			}
			this.doClose();
		}
		catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	/**
	 * 执行存储过程,返回多条数据的结果集合
	 * 存储过程返回多个结果集 
	 * 
	 *  当存储过程返回多个结果集时,遍历所有结果集才能得到执行的所有结果,使用 getMoreResults() 方法跳转到下一个结果集
	 *
	 */
	public void execMoreResultSetCall() {
		connect = getConnection();
		try {
			cstmt = connect.prepareCall("{call proc_stats_global()}");
			/*
			boolean isMoreResultSets = cstmt.execute();
			rs = cstmt.getResultSet();
			while(rs.next()) {
				System.out.println(rs.getString(1)+"====="+rs.getString(2)+"====="+rs.getString(3)+"======"+rs.getString(4)); 
			}
			*/
			boolean isMoreResultSets = cstmt.execute();
			while (cstmt.getMoreResults()) {	//此语句表达什么意思??
				rs = cstmt.getResultSet();		//表示获取多个结果集合数据的结果集合
				while(rs.next()) {
					System.out.println(rs.getString(1)+"====="+rs.getString(2)+"====="+rs.getString(3)+"======"+rs.getString(4)); 
				}
			}
			this.doClose();
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
	}
	
	
	// 获取多个结果集合
	// 如果存储过程返回多个结果集,每个结果集的数据结构都不一样,或者某些结果集的数据结构未知,则可以使用 getColumnName() 方法来得到结果集中数据的列名
	//存储过程返回多个结果集,并且每个结果集的数据结构未知或者不一样
	
	
	
	/**
	 * 关闭连接
	 */
	public void doClose() {
		try {
			if(null!=rs) {
				rs.close();
				rs=null;
			} 
			if(null!=cstmt) {
				cstmt.close();
				cstmt=null;
			} 
			if(null!=connect) {
				connect.close();
				connect=null;
			}
				
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
	}
	
	
	public static void main(String[]args) {
		TestProcedureDemo02 test = new TestProcedureDemo02();
		test.getConnection();
		//test.execCall();
		test.execMoreResultSetCall();
		test.doClose();
	}
}






 

DELIMITER $$

USE `shopping_thpad_com`$$

DROP PROCEDURE IF EXISTS `proc_stats_buyer`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_stats_buyer`()
BEGIN
	SELECT factors_id,factors_value,ip,pv,uv,bounce_rate FROM stats_buyer WHERE web_id='67679008' LIMIT 1;
    END$$

DELIMITER ;

 

 

DELIMITER $$

USE `shopping_thpad_com`$$

DROP PROCEDURE IF EXISTS `proc_stats_global`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_stats_global`()
BEGIN
	SELECT time_segment,pv,uv,ip,avr_access_time,stat_date FROM stats_global;
    END$$

DELIMITER ;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics