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的扩展运行.看来 ...
随机推荐
- [MeetCoder] Count Pairs
Count Pairs Description You are given n circles centered on Y-aixs. The ith circle’s center is at po ...
- [转]:Android 5.0的调度作业JobScheduler
参考:http://blog.csdn.net/cuiran/article/details/42805057 增加 JobScheduler 的同时,去掉了几个广播, CONNECTIVITY_AC ...
- iOS缓存-内存缓存
为了减少与服务器的连接沟通次数,提高应用程序的执行速度,使用了iOS的缓存机制 #import "YoungViewController.h" @interface YoungVi ...
- [svc]ssh批量分发key/批量用户管理
centos6 sshpass批量分发key yum install sshpass -y ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" 命令说 ...
- 真机提示Undefinedsymbolsforarchitecturearm64
转自:http://www.haodaima.net/art/2830860 iOS程序模拟器手机运行都正常,archiving出错:Undefined symbols for architectur ...
- 自动化运维工具SaltStack详细部署
==========================================================================================一.基础介绍==== ...
- javascript基础拾遗(一)
1.判断变量类型 var num = '123'; if(typeof num == 'number'){ alert('this is a number'); } else{ throw 'this ...
- 【C/C++】C语言复习笔记-17种小算法-解决实际问题
判断日期为一年中的第几天(考虑闰年) /* * 计算该日在本年中是第几天,注意闰年问题 * 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天 * 特殊情况,闰年且输入月份大于3时 ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)
相关资料: 注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYi ...
- phalcon无法更新分区字段解决办法
表里面有个分区字段,更新后,保存成功,结果实际上数据库没有更新. 后来使用原生sql,解决了这个问题. 获取di中的数据库连接,直接执行sql语句即可,下面的db为注册的数据库服务名 $db = $t ...