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教程】Android用户系统管理
原文:http://android.eoe.cn/topic/android_sdk Android用户迷恋于在自己的设备上安装他们所喜欢的应用.让您的应用受用户喜欢的一种方法就是让它个性化.Andr ...
- jQuery CSS()方法改变CSS样式实例解析
转自:http://www.jbxue.com/article/24588.html 分享一个jQuery入门实例:使用CSS()方法改变现有的CSS样式表,css()方法在使用上具有多样性.其中有一 ...
- 行为类模式(二):命令(Command)
定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. UML 优点 能比较容易的设计一个命令队列 可以较容易的将命令加入日志 ...
- [SQL in Azure] Tutorial: AlwaysOn Availability Groups in Azure (GUI)
http://msdn.microsoft.com/en-us/library/azure/dn249504.aspx Tutorial: AlwaysOn Availability Groups i ...
- 【FastDFS】FastDFS在CentOS的搭建
准备安装软件 [root@blog third_package]# cp fastdfs-nginx-module_v1.16.tar.gz FastDFS_v5.08.tar.gz libfastc ...
- 【驱动】linux驱动程序开发及环境搭建
1.mystery引入 1)设备驱动程序对外提供如下的功能: 1)设备初始化:对硬件设备进行初始化操作 2)数据交换:数据交换包括由内核层向硬件层传送数据.从硬件层读取数据 ...
- Python爬网——获取安卓手机统计数据
[本文出自天外归云的博客园] 1. 在安卓网上对热门机型进行爬网,取前五十: # -*- coding: utf-8 -*- import requests,re from bs4 import Be ...
- hdu1102(最小生成树水题)
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...
- ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)
第一种: CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.content ...
- iOS全局变量的声明和使用
在一个项目中,我们可能需要定义几个全局变量,在我们程序的任何位置都可以进行访问,提高我们的开发效率.在iOS中我们如何来实现呢?我们主要使用的是AppDelegate类来实现.如下: (1)AppDe ...