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

Java处理带返回值的存储过程Procedure (SQL Server)

    博客分类:
  • J2SE
阅读更多
package com.zjx.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestProcedure {
	
	String url = "jdbc:microsoft:sqlserver://172.16.11.20:1433;DatabaseName=new_cmcc;SelectMethod=cursor";
	String username = "sa";
	String password = "111";
	
	public static void main(String[] args) {
		TestProcedure tp = new TestProcedure();
		Connection conn = tp.getConn();
		tp.executeStoredProcedureTest(conn);
		
		tp.getAllUsers(conn);
		
		try {
			if(!conn.isClosed()){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

    
	public Connection getConn() {
		Connection conn = null;
		try {
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
			
		} catch (Exception e) {
			System.out.println("注册驱动失败!");
			e.printStackTrace();
		}
		try {
			conn = DriverManager.getConnection(url, username, password);
			
		} catch (Exception e) {
			System.out.println("数据库连接失败!");
			e.printStackTrace();
		}
		return conn;
	}

	/**
	 * 
   create table "new_cmcc"."dbo"."users"(
        "id" int identity not null,
       "firstname" varchar(50) null,
       "lastname" varchar(50) not null,
       "age" int default '(20)' not null,
        constraint "id" primary key ("id")
    )
	 */
	public static void getAllUsers(Connection conn){
		Statement st = null;
		ResultSet rs = null;
		try {
			st = conn.createStatement();
			rs = st.executeQuery("select * from new_cmcc.dbo.users");
			while(rs.next()){
				System.out.println(rs.getInt(1)+"  " +rs.getString(2)+"  " +rs.getString(3)+"  " +rs.getInt(4));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
			
		} finally{
			try {
				rs.close();
				st.close();
				
			} catch (SQLException e) {
				
				e.printStackTrace();
			}
		}
		
	}
	
	/**
	 * 
//drop procedure getNames;
CREATE PROCEDURE getNames
   (@cityName CHAR(50))
AS
BEGIN
   IF ((SELECT COUNT(*)
   FROM new_cmcc.dbo.users
   WHERE firstname = @cityName) > 0)
   RETURN 1
ELSE
   RETURN 0
END	 * @param con
	 */
	public static void executeStoredProcedureTest(Connection con) {
		   try {
		      CallableStatement cstmt = con.prepareCall("{? = call dbo.getNames(?)}");
		      cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
		      cstmt.setString(2, "周");		      cstmt.execute();
		      
		      System.out.println("RETURN STATUS: " + cstmt.getInt(1));
		      
		      cstmt.close();
		    
		   }
		   
		   catch (Exception e) {
		      e.printStackTrace();
		   }
		}
}

 

分享到:
评论

相关推荐

    JAVA JDBC连接 SQLServer2012 Maven项目

    通过这种方式,你可以使用Java的JDBC API在Eclipse的Maven项目中成功连接到SQL Server 2012并调用存储过程。这种方式具有良好的可扩展性和灵活性,可以方便地应用于各种数据库操作。同时,Maven作为项目管理工具,...

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

    ### Java连接SqlServer数据库调用存储过程详解 #### 一、引言 在现代软件开发过程中,Java作为一种广泛使用的编程语言,经常需要与各种数据库进行交互。其中,Microsoft SQL Server是一种非常流行的数据库管理系统...

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

    Java中调用SQL Server存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库逻辑,提高性能并降低网络流量。本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种...

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

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    使用存储过程访问MsSqlServer2000并带返回值+MD5加密

    首先,存储过程(Stored Procedure)是预编译的SQL语句集合,它们封装在数据库中,可以执行特定的任务或处理数据。在MsSqlServer 2000中,存储过程提供了一种高效、安全的方式来操作数据,因为它们减少了网络通信,...

    hibernate调用存储过程

    你可以构建一个SQL查询字符串,包含存储过程的调用,并通过`addScalar()`或`setResultTransformer()`来处理返回的结果。 ```java Session session = sessionFactory.openSession(); String sql = "CALL my_...

    oracle 存储过程 函数 dblink

    同样,我们可以通过Java代码来调用这个带有输出参数的存储过程: ```java package com.hyq.src; public class TestProcedureTWO { public TestProcedureTWO() {} public static void main(String[] args) { ...

    SQL Server存储过程编写

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样可以提高存储过程的性能。  ·存储过程的概念 ...

    一个java调用存储过程的示例项目

    6. 处理结果:根据存储过程的输出,获取结果集(ResultSet)或其他返回值,如整数或单个值,使用`CallableStatement.getXXX()`方法。 7. 清理资源:执行完毕后,记得关闭ResultSet、CallableStatement以及...

    jdbc调用存储过程,函数,游标

    本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...

    SQLServer存储过程编写

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。存储过程Procedure是...

    JAVA-ORACLE存储过程

    6. 处理结果,如果存储过程有返回值或输出参数,可以使用`getXXX()`方法获取,例如`String result = cs.getString(2)`。 7. 最后,记得关闭CallableStatement和Connection。 在JSP中,我们可以将上述Java代码封装到...

    jsp调用存储过程大集合

    5. `Java中调用SQL+Server存储过程示例.txt`和`jsp如何调用sql server存储过程.txt`提供了Java代码示例,解释了如何在`jsp`中通过Java代码调用存储过程。 通过学习以上资源,开发者可以更好地理解并掌握`jsp`调用...

    java调用存储过程示例

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在复杂的业务逻辑处理和数据操作时。本示例将深入探讨如何使用Java来调用存储过程,并处理返回的结果。存储过程是预编译的SQL语句集合,可以提高性能、安全...

    jave调用anywhere存储过程

    总之,Java调用Anywhere 9的存储过程涉及到JDBC连接、CallableStatement使用以及结果处理等环节。在实际操作中,需要根据数据库的具体情况和存储过程的特性进行适当的调整。确保正确配置数据库连接信息,并遵循Java...

    spring hibernate执行存储过程的例子

    在IT行业中,数据库操作是应用程序不可或缺的一部分,而存储过程作为数据库中的预编译...在实际开发中,确保正确配置数据库连接,并根据你的存储过程参数类型和返回值调整代码。希望这个详尽的解释对你的学习有所帮助。

    jdbc教程.ppt

    5. **带返回值的存储过程** 如果存储过程有返回值,可以定义输出参数。比如,一个返回用户信息的存储过程可能需要传入用户ID并返回用户名和密码: ```sql CREATE PROCEDURE getuserinfo2 (@id int, @userName ...

    存储过程

    存储过程是数据库管理系统中预编译的SQL语句集合,它是一种在数据库中存储复杂程序的方法,可以被多次调用,以完成特定的数据库操作。存储过程是数据库系统中的一个重要组成部分,它允许开发者将一系列的SQL操作封装...

Global site tag (gtag.js) - Google Analytics