Java调用SQL Server存储过程
1、调用普通存储过程
(1)创建存储过程
CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/
@Name nvarchar(50)
As
begin
select Contact.Id,Contact.Name,Phone,Email,QQ,GroupName from Contact,ContactGroup
where Contact.GroupId=ContactGroup.Id and Name like '%'+@Name+'%' order by Contact.Id desc
end
(2)Java代码
final String DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
final String DATABASE_URL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=AddressList";
final String DATABASE_USRE = "sa";
final String DATABASE_PASSWORD = "1234";
try {
Class.forName(DRIVER_CLASS);
Connection connection=DriverManager.getConnection(DATABASE_URL,DATABASE_USRE,DATABASE_PASSWORD);
CallableStatement callableStatement=connection.prepareCall("{call GetContactListByName(?)}");
callableStatement.setString(1, name);
ResultSet resultSet=callableStatement.executeQuery();
while(resultSet.next()){
int id=resultSet.getInt(1);
String string=resultSet.getString(2);
System.out.println(id+","+string);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
注意:如果存储过程无参数,则不需要写括号,如
CallableStatement callableStatement=connection.prepareCall("{call GetAllContactGroup}");
2、调用包含返回值及输出参数的存储过程
(1)创建存储过程
USE [AddressList]
GO
CREATE PROCEDURE [dbo].[GetGroupById] /*根据分组编号获取分组信息*/
@GroupName nvarchar(50) OUTPUT, /*输出参数*/
@Memo nvarchar(200) OUTPUT, /*输出参数*/
@id int
AS
BEGIN
select @GroupName=GroupName,@Memo=Memo from ContactGroup where id=@id
if @@Error<>0
RETURN -1 /*返回值*/
else
RETURN 0 /*返回值*/
END
(2)Java代码
CallableStatement callableStatement=connection.prepareCall("{?=call GetGroupById(?,?,?)}");
//返回值
callableStatement.registerOutParameter(1, Types.INTEGER);
//输出参数
callableStatement.registerOutParameter(2, Types.VARCHAR);
//输出参数
callableStatement.registerOutParameter(3, Types.VARCHAR);
//输入参数
callableStatement.setInt(4, 2);
callableStatement.execute();
//获得返回值
int returnValue=callableStatement.getInt(1);
//获得输出参数
String groupName=callableStatement.getString(2);
//获得输出参数
String memo=callableStatement.getString(3);
System.out.println(returnValue);
System.out.println(groupName);
System.out.println(memo);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
3、调用包含输入输出参数的存储过程。
(1)创建存储过程
USE [AddressList]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[test]
@GroupName nvarchar(50) output
AS
BEGIN
select @GroupName=GroupName from ContactGroup where GroupName like '%'+@GroupName+'%'
END
(2)Java代码
CallableStatement callableStatement=connection.prepareCall("{call test(?)}");
callableStatement.setString(1, name);
callableStatement.registerOutParameter(1, Types.VARCHAR);
callableStatement.execute();
String string=callableStatement.getString(1);
System.out.println(string);
Java调用SQL Server存储过程的更多相关文章
- java 调用 sql server存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- VS中调用SQL SERVER存储过程
存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...
- Java调用SQL Server的存储过程详解
转载自Microsoft的官方文档 http://msdn2.microsoft.com/zh-cn/library/ms378995.aspx收录于 www.enjoyjava.net/f25 本文 ...
- (转)Java调用SQL Server的存储过程详解
本文转载自:http://dev.yesky.com/128/8088128.shtml 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序 ...
- Java调用SQL Server的存储过程详解(转)
1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: 以下是引用片段:{call proce ...
- Java的jdbc调用SQL Server存储过程Bug201906131119
SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...
- qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...
- PHP调用SQL Server存储过程
一.安装SQL Server Driver for PHP 在微软官网上发现了这个东西,他提供了一套PHP对MS2005/2008操作的全新函数库,并且支持UTF8,作为PHP的扩展运行.看来 ...
随机推荐
- Android基础知识之拼写检查框架
原文:http://android.eoe.cn/topic/android_sdk 拼写检查器框架 Android平台提供了一个拼写检查器的框架,来方便你在你的应用中实现并使用拼写检查.这个框架是A ...
- jmeter经验----java 读取文件中文乱码问题
很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...
- Ubuntu 18.04 安装和常用软件安装
Ubuntu 18.04 安装 下载 Ubuntu 制作 U 盘启动盘 设置电脑为 U 盘启动 插入 U 盘,重启电脑 按照提示安装 Ubuntu 更新 NVIDIA 显卡和 Broadcom 无线网 ...
- MYSQL MVCC实现及其机制
多版本并发控制 Multiversion Concurrency Control 大部分的MySQL的存储 引擎,比如InnoDB,Falcon,以及PBXT并不是简简单单的使用行锁机制.它们都使用了 ...
- VS2010常用插件
- css3实现画对号动画
目标:实现对号动画,慢慢画出来的感觉: 原理:外层div的背景是一个对号图片,用一个div做遮罩,让遮罩div层从左到右做运动一次即可实现动画,需要注意的是遮罩div的初始位置应该在外层div的外面: ...
- OpenMP基础使用
OpenMP是CPU并行加速相关的编译处理方案,VS非常早的版本号就对其提供了支持,只是默认是关闭的.要开启这一支持.仅仅须要在项目的属性中设置就能够,详细选项为:配置属性->C/C++-> ...
- 字符串匹配算法KMP算法
数据结构中讲到关于字符串匹配算法时,提到朴素匹配算法,和KMP匹配算法. 朴素匹配算法就是简单的一个一个匹配字符,如果遇到不匹配字符那么就在源字符串中迭代下一个位置一个一个的匹配,这样计算起来会有很多 ...
- Quantum Computation and Quantum Information
https://www.amazon.com/Quantum-Computation-Information-10th-Anniversary/dp/1107002176/ref=asap_bc?ie ...
- shell编程:for 循环
hell 编程——for in 循环 -------for in 格式------- for 无$变量 in 字符串 do $变量 done 一简单的字符串 枚举遍历法,利用for i ...