`
lzth
  • 浏览: 142811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中调用SQL Server存储过程示例

阅读更多
最近做了个Java的小项目(第一次写Java的项目哦), 到网上搜索了半天,找到了一个比较好点的调用存储过程的例子,而且网上普遍采用的都是setXXX((int parameterIndex, XXX x)的形式。这种形式感觉不是很直观,下面就发布一个完整的采用setXXX(String parameterName, XXX x)的编写方法。创建数据表,存储过程的代码都完整发布。

  创建表:

CREATE TABLE [BookUser] (
    [UserID] [int] IDENTITY (1, 1) NOT NULL ,
    [UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BookUser_Guid] DEFAULT (newid()),
    [BirthDate] [datetime] NOT NULL ,
    [Description] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Photo] [image] NULL ,
    [Other] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT
           [DF_BookUser_Other] DEFAULT ('默认值'),
    CONSTRAINT [PK_BookUser] PRIMARY KEY  CLUSTERED
    (
        [UserID]
    )  ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


  创建存储过程:

CREATE PROCEDURE InsertUser
@UserName varchar(50),
@Title varchar(255),
@Guid  uniqueidentifier,
@BirthDate DateTime,
@Description ntext,
@Photo image,
@Other nvarchar(50),
@UserID int output
As

Set NOCOUNT ON
If Exists (select UserID from BookUser Where UserName = @UserName)
RETURN 0
ELSE
Begin
INSERT INTO BookUser (UserName,Title,Guid,BirthDate,Description,Photo,Other) VALUES(@UserName,@Title,@Guid,@BirthDate,@Description,@Photo,@Other)
SET @UserID = @@IDENTITY
RETURN 1
End
GO


  JSP代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<%
//注意:下面的连接方法采用最新的SQL Server的JDBC,
//请到 http://msdn2.microsoft.com/zh-cn/data/aa937724.aspx 下载
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password=";
String sql = "{? = call InsertUser(?,?,?,?,?,?,?,?)}";
Connection cn = null;
CallableStatement cmd = null;
try
{
 cn = DriverManager.getConnection(url);
 cmd = cn.prepareCall(sql);
 java.util.UUID Guid = java.util.UUID.randomUUID();
 String FilePath = application.getRealPath("") + "testlogo.gif";
 java.io.FileInputStream f = new java.io.FileInputStream(FilePath);
 Date rightNow = Date.valueOf("2007-9-9");
 cmd.setString("UserName","mengxianhui"); //注意修改这里,存储过程验证了UserName的唯一性。
 cmd.setString("Title","孟宪会");
 cmd.setString("Guid",Guid.toString());
 cmd.setString("BirthDate","2007-9-9");
 cmd.setDate("BirthDate",rightNow);
 cmd.setString("Description","【孟子E章】");
 cmd.setBinaryStream("Photo",f,f.available());
 cmd.setString("Other",null);
 cmd.registerOutParameter(1,java.sql.Types.INTEGER);
 cmd.registerOutParameter("UserID",java.sql.Types.INTEGER);
 cmd.execute();
 int returnValue = cmd.getInt(1);
 int UserID = cmd.getInt("UserID");
 if(returnValue == 1)
 {
  out.print("<li>添加成功!");
  out.print("<li>UserID = " + UserID);
  out.print("<li>returnValue = " + returnValue);
 }
 else
 
 f.close();
}
catch(Exception ex)

finally
{
 try
 {
  if(cmd != null) 
  {
   cmd.close();
   cmd = null;
  }
  if(cn != null)
  {
   cn.close();
   cn = null;
  }
 }
 catch(Exception e)
 
}
%>
</body>
</html>
分享到:
评论

相关推荐

    Java中调用SQL Server存储过程

    本篇文章将详细探讨如何在Java中调用SQL Server的存储过程。 首先,确保你的开发环境中已经安装了JDBC驱动,这是连接Java和SQL Server的桥梁。对于SQL Server,通常使用Microsoft提供的JDBC驱动,即mssql-jdbc。你...

    Java中调用SQL Server存储过程详解

    本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种不同类型的存储过程调用方式。 1. 使用不带参数的存储过程 对于不带参数的存储过程,我们可以通过`Statement`对象的`executeQuery`方法,配合`{...

    Java中调用SQL存储过程示例

    总的来说,Java调用SQL Server存储过程涉及以下几个关键点: 1. 加载JDBC驱动。 2. 建立数据库连接。 3. 创建CallableStatement对象,设置SQL语句,使用问号作为占位符。 4. 注册输出参数,并设置输入参数。 5. 执行...

    jsp如何调用sqlserver存储过程

    在JavaServer Pages (JSP) 中调用SQL Server存储过程是一项常见的任务,特别是在构建Web应用程序时需要执行复杂的数据库操作。存储过程是预先编译的SQL语句集合,可以在数据库服务器上执行,提供性能优化和代码复用...

    sql server调用存储过程

    在Java应用程序中,你可以使用JDBC(Java Database Connectivity)来调用SQL Server的存储过程。以下是一个简单的示例: ```java import java.sql.*; public class CallSPExample { public static void main...

    JSP调用SQL Server的存储过程

    在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,我们来看看数据库表`BookUser`的创建...

    java连接SqlServer数据库调用存储过程代码.docx

    通过以上两个示例,我们可以看到使用Java调用SQL Server数据库中的存储过程是比较简单的。关键在于正确地建立数据库连接、准备`CallableStatement`以及处理可能的异常情况。在实际应用中,还需要注意资源的管理和...

    java调用ms sql 存储过程(全)

    在Java编程中,调用Microsoft SQL Server(MS SQL)的存储...这就是Java调用MS SQL存储过程的基本步骤。确保遵循最佳实践,如使用连接池管理数据库连接,以及在生产环境中处理异常和错误,以提高程序的稳定性和性能。

    jsp调用sqlserver2000存储过程

    ### jsp调用sqlserver2000存储过程 #### 一、背景介绍 在Web开发中,经常需要处理数据库操作。使用JSP(JavaServer Pages)与后端数据库进行交互是一种常见的方式。本文将详细介绍如何通过JSP来调用SQL Server 2000...

    java+sqlserver+存储过程

    通过学习《Java存储过程学习必看.doc》和《sqlserver存储过程入门例子加讲解.pdf》,你将能够深入了解如何在Java中有效地使用SQL Server的存储过程,包括参数传递、事务控制、异常处理等高级主题。这两个文档应该...

    jsp sql server存储过程调用的例子

    根据提供的文件信息,我们可以深入探讨如何在JSP中调用SQL Server存储过程,并结合具体的代码示例进行解析。 ### JSP 调用 SQL Server 存储过程 #### 一、存储过程创建与理解 首先,我们需要理解所提供的SQL ...

    Java调用SQLServer的存储过程详解[归类].pdf

    Java调用SQL Server的存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库操作,提高性能并提供更好的安全控制。本文将详细介绍如何通过Java来调用SQL Server的存储过程,分为不...

    java调用存储过程(含out参数)

    以下是一个简单的示例代码,演示了如何在Java中调用含`OUT`参数的存储过程: ```java import java.sql.*; public class JavaCallProcedure { public static void main(String[] args) { try { Class.forName(...

    游标 和 存储过程的创建 及 在程序中的调用

    在这个示例中,我们创建了一个SqlCommand对象,设置其CommandType为StoredProcedure,添加参数,然后执行存储过程并读取返回的结果集。如果需要使用游标,可以调用SqlCommand的ExecuteReader方法,它会返回一个...

    java调用存储过程示例

    在Java中,我们主要通过`java.sql.CallableStatement`接口来调用存储过程。以下是一个基本的步骤: 1. **建立数据库连接**: 使用`DriverManager.getConnection()`方法创建一个数据库连接。这个方法需要数据库URL...

    JAVA连接sqlserver2008R2驱动sqljdbc4-3.0.jar

    3. **连接过程**:在Java中,使用`Class.forName()`方法加载驱动,然后通过`DriverManager.getConnection()`方法创建数据库连接。例如: ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");...

    JAVA调用存储过程

    综上所述,本文详细介绍了如何在Java中调用SQL Server存储过程,包括无结果集返回的调用、返回单个SQL类型数据的调用以及返回记录集的调用。这些知识点对于进行数据库操作具有重要的实际应用价值。

Global site tag (gtag.js) - Google Analytics