`

jdbc中使用简单存储过程

    博客分类:
  • j2se
阅读更多

今天说一说用在JDBC中调用存储过程,本次讲解为初级篇采用的数据库为SQLSERVER,根据需要还会发布相应的高级篇。

一、建立实例数据库

      描述:创建两张表,一个学生信息表(stuinfo),另一个是学生成绩表(stuMarks),在这两张表中分别插入学生信息

并设置stuinfo为主键表,stuMarks为外键表。创建一个存储过程查询本班没有通过考试的学员人数(可适当将未及格学员的信息打印出来)。

      建表:

use stuDB
go
if exists(select * from sysobjects where name='stuinfo')
	truncate table stuinfo
create table stuinfo(
	stuName varchar(20) not null,
	stuNo char(6) not null,
	stuAge int not null,
	stuID numeric(18, 0),
	stuSeat smallint identity(1, 1),
	stuAddress text
)
go
if exists(select * from sysobjects where name='stuMarks')
	truncate table stuMarks
create table stuMarks(
	ExamNo char(7) not null,
	stuNo char(6) not null,
	writtenExam int not null,
	LabExam int not null
)

 

     插入数据:

alter table stuMarks
	add constraint FK_stuNo
		foreign key(stuNo) references stuInfo(stuNo)
		on delete cascade 
insert into stuinfo values('张秋丽', 's25301', 18,123876493217894538,  '北京海淀区');
insert into stuinfo values('李文才', 's25302',  28,348907621874635832, '地址不详');
insert into stuinfo values('李斯文', 's25303', 22,371409823723841987,  '河南洛阳');
insert into stuinfo values('欧阳峻峰', 's25304',34, 238651097452691873, '地址不详');
insert into stuinfo values('梅超风', 's25318', 23,371893123876453221, '地址不详');
insert into stuMarks values('s271811', 's25303', 80, 58)
insert into stuMarks values('s271813', 's25302', 50, 90)
insert into stuMarks values('s271816', 's25301', 77, 82)
insert into stuMarks values('s271818', 's25318', 45, 65)
insert into stuMarks values('s271819', 's25304', 60, 60)

 

     创建存储过程:

if exists(select * from sysobjects where name='pro_stufout')
	drop procedure pro_stufout
go
create procedure pro_stufout
@notpassSum int output,
@writtenPass int=60,
@labPass int=60
as
	print '------------------------------------------------------'
	print '			参加本次考试没有通过的学员是:'
	select stuName, stuinfo.stuNo, writtenExam, labExam from stuinfo inner join stuMarks on stuinfo.stuNo = stuMarks.stuNo
		where writtenExam < @writtenPass or labExam < @labPass
	return select @notpassSum=count(stuNo) from stuMarks
		where writtenExam < @writtenPass or labExam < @labPass
	
go

二、JDBC调用存储过程

  1. 无参调用
  2. 带参数调用(包括输出参数和输入参数)
  3. 方法调用

     以带参数的方法调用为例:

public int executeProcedure(){
		
		int returnValue = 0;
		
		CallableStatement call = null;
		Connection conn = SQLConnection.getSQLConnection("qdaoStuDB");
		try {
			call = conn.prepareCall("{?=call pro_stufout(?, ?)}");
			call.setInt(3, 60);
			call.registerOutParameter(1, java.sql.Types.INTEGER);
			call.registerOutParameter(2, java.sql.Types.INTEGER);
			ResultSet rs = call.executeQuery();
			while(rs.next()){
				System.out.println(rs.getString(1));
			}
//			call.execute();
//			System.out.println(b);
			returnValue = call.getInt(1);
			System.out.println("----" + returnValue);
			System.out.println("@@@@@" + call.getInt(2));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return returnValue;
	}

 输出结果:

              张秋丽
              李文才
              欧阳俊雄
              ----3
             @@@@@3

 后续章节待续。

分享到:
评论

相关推荐

    JDBC调用存储过程

    这是用JBuilder做的一个简单的例子, 用java代码调用存储过程,实现增删改查。

    针对存储过程通用的jdbc封装

    针对java调用存储过程写的通用封装,oracle,mssql测试通过,附带测试脚本.以前写过一个,感觉不是很好,这个周末就重写了一个,大家多多提意见,是eclipse工程直接跑junit就行了,所有的...除了存储过程也可以执行简单的sql.

    自己封装的JDBC工具类源码

    最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、...

    JDBC执行过程

    JDBC执行存储过程的四种情况

    mysql调用存储过程

    JDBC调用mysql存储过程 很简单 很实用。。。。。。

    JDBC学习中存储过程的调用

    在Java开发中我们在很多情况下都会用到存储过程,因此我们对于存储过程的掌握也应该是非常熟练的了,这里,我仅简单提及。  以前我们经常在命令窗口中以命令的形式来创建存储过程,并通过对存储过程的操作,来...

    JDBC笔记 JDBC笔记

    java.sql.CallableStatement 用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。 java.sql.ResultSet 指的是查询返回的数据库结果集。 java.sql.ResultSetMetaData 可用于获取...

    jdbc连接数据库的方式2

     在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。  9、使用Object...

    Java_JDBC由浅入深

    7.1 实际项目中如何使用JDBC 41 7.2 DAO设计模式简介 42 7.3 DAO设计模式的实现 42 7.4 DAO设计模式与工厂模式的整合 49 7.5 DAO设计模式测试 52 第八节 JDBC对事务的支持 52 8.1 模拟转账 53 8.2 jdbc默认事务 54 ...

    数据库:存储过程、触发器、索引实验代码

    2.通过ODBC、OLEDB、JDBC或任意其他的途径,在前端程序(C/S或B/S模式)中调用所实现的后台存储过程。(此代码使用python和ODBC实现) 3.在你的案例场景中,分别设计并实现一个由数据插入、数据更新、数据删除所...

    批量处理JDBC语句提高处理速度

    有时候JDBC运行得不够快,这使得有些程序员使用数据库相关的存储过程。作为一个替代方案,可以试试使用Statement 的批量处理特性看看能否同时执行所有的SQL以提高速度。 存储过程的最简单的形式就是包含一系列SQL...

    java比较两个mysql数据库中的表信息差异

    这个主要比对的是表,表中列的基本信息比较,比较是否存在是否类型一致等,对于函数存储过程则只是简单的比较是否存在,内容没有比对。如果谁感兴趣可以完善该比对功能。 JAVA代码,不复杂,看看就明白,都是采用...

    武汉大学国际软件学院 《数据库课程设计》实验任务书 —— 实验七

    (5) 学会使用JDBC调用接口对数据库进行简单的操作,要求实现的操作包括:创建表、修改表结构、插入数据、更新表中的数据、删除数据、简单的查询操作、复杂查询操作、创建存储过程、触发器等; (6) 在实现(4)中...

    Java数据库编程宝典2

    3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...

    Java数据库编程宝典4

    3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...

    Java数据库编程宝典1

    3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...

    mybatis的开发

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及...MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

    Java数据库编程宝典3

    3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...

    Mybatis框架基础

    在原生的Java技术中,需要使用JDBC实现对数据库中的数据访问,执行过程繁琐且相对固定,使用框架可以有效的提高开发效率!此文件包含Mybatis的配置流程! MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 ...

    SpringBoot项目整合MyBatis连接数据库

    在我们日常的开发过程中,肯定不可避免的会使用到数据库以及SQL语句。比如,刚开始学习Java的时候可能会遇到JDBC,它是连接Java和数据库的桥梁,我们可以使用JDBC来建立与数据库之间的连接并且执行相应的SQL语句。...

Global site tag (gtag.js) - Google Analytics