Java调用数据库存储过程的研究与实现
2019-08-10李焕玲
李焕玲
摘要:存储过程是数据库中的一个重要对象,利用存储过程可以提高数据库的执行效率,提高数据库的安全性,并能减少网络数据的传输。本文介绍了存储过程的概念及分类,以及存储过程的创建方法,并詳细介绍了如何利用Java程序调用数据库存储过程。
关键词:数据库;存储过程;java;CallableStatement接口
分类号 TP311.13 文献标识码:A
文章编号:1009-3044(2019)17-0014-02
开放科学(资源服务)标识码(OSID):
随着互联网+以及大数据时代的到来,如何提高数据的执行效率已成为数据处理的主要任务,存储过程是SQL Server数据库的重要技术,它具有强大的编程功能,并且还可以提高程序的执行效率,提高数据的安全性。
1 存储过程概述
1.1存储过程的概念
存储过程(Stored Procedure)是数据库中的一种对象,它是为了完成一个特定的任务而由SQL语句构成的集合。存储过程存储在数据库中,只需要一次编译后即可重复使用。
1.2 存储过程的分类
1)系统存储过程
这类存储过程是由SQL Server系统提供的,可进行各种数据库的基本设计。用户可直接使用,如:sp_renamedb可对数据库进行更名,该类存储过程名以sp_开头。
2)本地存储过程
这类存储过程是由用户创建的,该存储过程是为了完成一个具体的功能,一般所说的存储过程就是指本地存储过程。
3)临时存储过程
这类存储过程存放在临时数据库(tempdb)中,其中以#开头的称为本地临时存储过程,只有创建它的用户才可以使用。另一种以##开并没有的称全局临时存储过程,该存储过程可以被连接到数据库服务器上的所有用户访问执行。
4)远程存储过程
这类存储过程是存放在远程服务器上的存储过程,用户可以进行远程访问。
5)扩展存储过程
这类存储过程是用户使用外部程序语言编写的存储过程,名称一般以xp_开头。
1.3 存储过程的特点
1)提高运行效率
由于存储过程在创建的时候,数据库已经对其进行了解析和优化,以后就可以直接运行而不需要重新编译。而普通的SQL语句每次执行时都要进行编译,所以使用存储过程的执行速度会比普通SQL语句快,从而提高数据库的运行效率。
2)减少网络传输
存储过程直接在数据库服务器上运行,数据的访问都在数据库服务器内部进行,执行结束后只需将运行结果返回给客户端,而客户端调用存储过程只需要传输存储过程名和相关参数即可,这就比传输SQL语句的数据量少,所以会减少一定的网络传输。
3)可重复使用
存储过程一旦创建好后可以重复使用,从而减少数据库开发人员的工作量。
4)安全性高
通过向用户授予权限,可设定只有特定用户才具有对指定存储过程的使用权限。
2 创建存储过程
以SQL Server数据库为例,设计定在SQL Server中已创建了数据库mydb,并在该数据库中创建了student表:student(sno,sname,sex,sbirth),接下来将创建几种常用的存储过程。
2.1 不带参数的存储过程
该类存储过程创建完成后,只能完成一个具体的任务,在执行时无须用户输入参数。
例如创建p_xs01存储过程,要求查询所有学生年龄。该存储过程返回所有学生的年龄,其代码如下:
2.2 带输入参数的存储过程
该类存储过程可以扩展存储过程的功能,可以完成一类任务,在执行时通过用户输入参数,将外部信息传递到存储过程中。
例如:创建p_xs02存储过程,要求输入一个学生的姓名并显示该学生的年龄。该存储过程有一个输入参数学生姓名,并且返回该学生的年龄,其代码如下:
2.3 带输入和输出参数的存储过程
存储过程的参数可以是输入也可以是输出,通过输入过程可以将外部信息传递给存储过程,通过输出参数可以将信息输出到屏幕,输出参数在使用时需使用output关键字声明。
例如:创建p_xs03存储过程,要求输入一个学生的姓名,并且输出该学生的年龄。该存储过程有一个输入参数学生姓名,一个输出参数年龄,其代码如下:
3 Java调用存储过程
3)创建数据库连接对象。
3.1调用不带参数的存储过程
其中,c是数据库连接对象,通过调用p_xs02存储过程,可将王美的年龄输出。
3.3 调用带输入和输出参数的存储过程
4 总结
在Java程序设计中,数据访问是非常重要的,只有通过调用数据库中的存储过程,才能提高数据库的执行效率,减少网络传输,使得SQL语句更加安全,所以掌握存储过程对数据库操作是非常重要的。
参考文献:
[1] 齐文娟. 对SQL Server存储过程的研究与应用[J].廊坊师范学院学报:自然科学版,2010(8).
[2] 郝爱语. 通过存储过程更新数据为技术的探究与实现[J].软件导刊,2010(10).
[3] 陈雅.SQL Server数据库存储过程应用研究[J].中国科技信息,2017(5).
[4] 张梅梅.SQL Server 2008中的存储过程的研究及应用[J].中国市场,2016(6).
[5] 韩翔宇.数据库存储过程的探讨及应用[J].信息系统工程,2015(12).
[6] 陈潇.SQL Server2008数据库存储过程的应用[J].软件工程师,2015(6).
[7] 调用存储过程.https://blog.csdn.net/aigochina/article/details/7956936
[8] 百度百科.https://baike.baidu.com/
【通联编辑:王力】