读书人

JAVA操作存储过程二

发布时间: 2012-10-30 16:13:35 作者: rapoo

JAVA操作存储过程2

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`()BEGINSELECT 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`()BEGINSELECT time_segment,pv,uv,ip,avr_access_time,stat_date FROM stats_global;    END$$DELIMITER ;

?

读书人网 >编程

热点推荐