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 ;
分享到:
相关推荐
java操作存储过程java操作存储过程java操作存储过程java操作存储过程java操作存储过程
java操作存储过程的,适合初学者,分类比较清晰,1分不多,适合初学者
java操作mysql存储过程的例子.doc
java链接数据库,调用存储过程等操作。
采用JAVA调用存储过程实现简单的数据库增/删/改/查操作.该小程序适合初学者作为学习参考! 附带数据库和说明! 希望大家能共同学习 共同进步!
MSSQL 表操作存储过程的示例 (update, insert, delete) 支持数据字典生成 生成格式可以是 Word 或Excel 格式 支持简单的 SQL 语句操作 请从http://progame.vip.myrice.com/下载最新版本
是一个模拟存储管理过程的操作系统程序,采用JAVA16编写,有图形化界面GUI。程序包含首次适应算法、循环首次适应算法、最佳算法和最差算法。并且包括存储收回的分区合并问题的四种情况。
在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。可以在数据库中定义子程序,然后把子程序存储在数据库服务器,之后通过名称调用。
有很多 操作数据库 为了提高效率而要用存储过程来写sql 这是三个简单的例子
数据自动采集接口的实现需要依托于LabVIEW数据采集技术以及Java存储过程,在LabVIEW数据采集过程中引进Java存储过程,借助此接口可以实现实验室数据向船舶数字化平台的导入,有效节省人工操作环节。文章首先对LabVIEW...
本文讲述如何在Oracle通过任务和管道的应用,异步调用存储过程的方法。并且介绍了其基本原理和具体实现测试。
内有三个文件 TESTPACKAGE.txt和CURSOR_TEST2.txt中为oracle建存储过程语句,OracleProcedure.java为java操作存储过程的程序
实体类,实体操作类,存储过程 代码自动生成工具
JDBC创建触发器 JDBC存储过程 JDBC创建表 数据备份 java备份数据库/JAVA恢复数据、java导入sql脚本
主要介绍了Java中调用SQL Server存储过程详解,本文讲解了使用不带参数的存储过程、使用带有输入参数的存储过程、使用带有输出参数的存储过程、使用带有返回状态的存储过程、使用带有更新计数的存储过程等操作实例,...
hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。
MySql 数据库用java程序创建表以及存储过程.pdf
实验一设计一个有 N个进程共行的进程调度程序。 要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程,多级反馈队列调度算法这两种...从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
java+Oracle分页,java操作oracle视图,存储过程。