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);

最新文章

  1. 初步进行vs单元测试
  2. [C#] Control.Invoke方法和跨线程访问控件(转载)
  3. 关于rem的学习
  4. EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义
  5. Sharepoint2013:日期控件报错
  6. border边框的宽度/样式/颜色 全部值
  7. 使用php模拟post的几种方法
  8. 写的cursor demo仅作记录
  9. Eclipse(非J2EE版本)配置Extjs环境以及安装部署Tomcat
  10. 洛谷 P1064 金明的预算方案
  11. 基于HTTP协议下载文件的实现
  12. JS-运动基础(一)
  13. WinForm 控件(上)
  14. .NET Core使用skiasharp文字头像生成方案(基于docker发布)
  15. freeplane使用指南
  16. build.gradle使用gradle.property中定义的字段及乱码问题的解决
  17. spring中注解式事务不生效的问题
  18. Nginx三部曲(2)性能
  19. appium---第四个脚本,进入app,有权限弹窗的方法
  20. 前端 HTML body标签相关内容 常用标签 段落标签 p标签

热门文章

  1. 微信小程序实现给循环列表添加点击样式实例
  2. JasperReport学习札记6-JRXML的标签
  3. jQuery CSS()方法改变CSS样式实例解析
  4. Atitit spring 3.0 3.1 3.2 4.0 4.3 5.0 新特性
  5. Java常考面试题(四)
  6. Java 清除指定目录文件夹下文件
  7. zookeeper的原理讲解
  8. 搭建kafka源码开发环境时使用&quot;gradle idea&quot;命令构建源码失败
  9. VMware vCenter 资源池
  10. java判断集合是否相等