java调用存储过程返回结果集,返回字符串

合集下载

java jdbc的callablestatement接口常用方法-概述说明以及解释

java jdbc的callablestatement接口常用方法-概述说明以及解释

java jdbc的callablestatement接口常用方法-概述说明以及解释1.引言1.1 概述在Java开发中,JDBC(Java Database Connectivity)是一种用于与关系型数据库进行交互的标准API。

JDBC提供了一组接口和类,用于连接数据库、执行SQL语句、获取查询结果等操作。

在JDBC中,CallableStatement接口是PreparedStatement接口的子接口,用于调用存储过程和函数。

相比于PreparedStatement,CallableStatement提供了更多关于存储过程和函数的操作方法,使得开发者能够更加方便地与数据库中的存储过程和函数进行交互。

本文将介绍Java JDBC的CallableStatement接口的常用方法,帮助读者了解和掌握在Java程序中使用CallableStatement接口进行存储过程和函数的调用。

在接下来的章节中,我们将首先对CallableStatement接口进行简单的介绍,包括其作用和用途。

然后,我们将详细介绍CallableStatement 接口常用的方法,包括参数设置、执行存储过程和函数、获取返回结果等。

最后,我们将对本文进行总结,并展望一些与CallableStatement相关的未来发展方向。

通过学习本文,读者将能够了解并掌握Java JDBC的CallableStatement接口的常用方法,从而能够在实际开发中灵活地进行存储过程和函数的调用,提高数据库操作的效率和准确性。

接下来,让我们开始深入探索CallableStatement接口的奥秘吧!1.2 文章结构本文主要介绍Java JDBC的CallableStatement接口的常用方法。

文章分为引言、正文和结论三部分。

引言部分概述了文章的主题和目的。

主要介绍了Java JDBC技术是一种用于与数据库进行交互的重要技术,而CallableStatement接口是Java JDBC中用于调用数据库存储过程和函数的核心接口。

CallableStatement调用Oracle存储过程返回结果集(ResultSet)

CallableStatement调用Oracle存储过程返回结果集(ResultSet)

Java(CallableStatement)调用Oracle存储过程返回结果集(ResultSet) 一:无返回值的存储过程调用存储过程:CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) ASBEGININSERT INTO DBO.EMP (ID,NAME) VALUES (PARA1, PARA2);END PRO_1;Java代码:package com.icesoft.service;import java.sql.*;import java.sql.ResultSet;public class CallProcedureTest1 {public CallProcedureTest1() {super();}public static void main(String[] args) {String driver = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl ";String user = "admin";String pwd = "password";Connection conn = null;CallableStatement cs = null;ResultSet rs = null;try {Class.forName(driver);conn = DriverManager.getConnection(url, user, pwd);cs = conn.prepareCall("{ call DBO.PRO_1(?,?) }");cs.setString(1, "10");cs.setString(2, "Peter");cs.execute();} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (cs != null) {cs.close();}if (conn != null) {conn.close();}} catch (SQLException e) {}}}}备注,存储过程PRO_1中用到了表EMP(ID, NAME),需事先建好二:有返回值的存储过程(非结果集)存储过程:CREATE OR REPLACE PROCEDURE PRO_2(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) ASBEGINSELECT INTO PARA2 FROM EMP WHERE ID= PARA1;END PRO_2;Java代码:package com.icesoft.service;import java.sql.*;public class CallProcedureTest2 {public CallProcedureTest2() {super();}public static void main(String[] args) {String driver = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String user = "admin";String pwd = "password";Connection conn = null;CallableStatement cs = null;ResultSet rs = null;try {Class.forName(driver);conn = DriverManager.getConnection(url, user, pwd); cs = conn.prepareCall("{ call DBO.PRO_2(?,?) }");cs.setString(1, "10");cs.registerOutParameter(2, Types.VARCHAR);cs.execute();String name = cs.getString(2);System.out.println("name: " + name);} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (cs != null) {cs.close();}if (conn != null) {conn.close();}} catch (SQLException e) {}}}}注意:cs.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

jdbctemplate调用存储过程返回多行

jdbctemplate调用存储过程返回多行

jdbctemplate调用存储过程返回多行在Spring 的JdbcTemplate 中,如果要调用存储过程并返回多行结果,可以使用`query` 方法,并通过`RowMapper` 将每行结果映射到相应的对象。

下面是一个简单的示例:假设有一个存储过程,接收输入参数,并返回多行结果:```sqlCREATE PROCEDURE getEmployees(IN departmentId INT)BEGINSELECT * FROM employees WHERE department_id = departmentId;END;```然后,你可以使用JdbcTemplate 来调用这个存储过程:```javaimport org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.stereotype.Repository;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;@Repositorypublic class EmployeeRepository {private final JdbcTemplate jdbcTemplate;public EmployeeRepository(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public List<Employee> getEmployeesByDepartment(int departmentId) {String sql = "CALL getEmployees(?)";// 使用query 方法调用存储过程,通过RowMapper 映射结果到Employee 对象return jdbcTemplate.query(sql, new Object[]{departmentId}, new EmployeeRowMapper());}private static class EmployeeRowMapper implements RowMapper<Employee> {@Overridepublic Employee mapRow(ResultSet resultSet, int i) throws SQLException {// 将查询结果映射到Employee 对象Employee employee = new Employee();employee.setId(resultSet.getInt("id"));employee.setName(resultSet.getString("name"));// 其他属性的映射...return employee;}}}```在上述示例中,`EmployeeRepository` 类通过`jdbcTemplate.query` 方法调用存储过程,并使用`EmployeeRowMapper` 将查询结果映射到`Employee` 对象。

java获取存储过程返回的结果集(多个结果集)

java获取存储过程返回的结果集(多个结果集)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系java 获取存储过程返回的结果集(多个结果集)2014/01/16 11690 在中,DataSet 可以自动接收多个结果集,形成DataTable 数组。

使用JAVA 时,也想要实现这个效果,百度一顿查找,终于找到解决的办法。

核心方法:CallableStatement ResultSet具体实现代码:import java.sql.CallableStatement; import java.sql.ResultSet;public void search() {String re = ““;String sql = “call pro1(?,?);”;Connection con = DBConnPool.getConnection();//建立数据连接对像CallableStatement callsm = null;try {callsm = con.prepareCall(sql);// 给存储过程传参// callsm.setString(1, “res”);// callsm.setString(2, “me”);//执行存储过程callsm.execute();// 获取结果集ResultSet rs = callsm.getResultSet();while(rs.next()){re += (re!=““?”,”:”“)+rs.getString(“ID”);}re+= “|”;//判断是否有第二个结果集if (callsm.getMoreResults()) {// 这个判断会自动指向下一个结果集ResultSet rs1 = callsm.getResultSet();while(rs1.next()){re += (re!=““?”,”:”“)+rs1.getString(“Q_ID”);}try{// 关闭rs1if (rs1 != null){rs1.close();}}catch (Exception e) {e.printStackTrace();}}try {// 关闭rs1if (rs != null) {rs.close();}}catch (Exception e) {e.printStackTrace();}System.out.println(re);}catch (Exception e) {e.printStackTrace();}finally {try {callsm.close();con.close();}catch (Exception e) {e.printStackTrace();}} }tips:感谢大家的阅读,本文由我司收集整编。

JAVA通过MyBatis调用MySql存储过程和函数

JAVA通过MyBatis调用MySql存储过程和函数

JAV A通过MyBatis调用MySql存储过程和函数1.引言无论是采用SPRING MVC框架开发WEB画面,还是开发需按一定时间间隔执行的批处理,都可能要调用数据库的存储过程或函数。

其间调用参数设置不正会浪费大量调试时间初学者甚至放弃使用存储过程。

本文记录了通过MyBatis调用MySql存储过程和函数的具体参数设置内容,供参考。

2.MySql存储过程例/*全公司员工下一年度带薪休假一发赋予处理*/CREATE DEFINER=`DBuser`@`%` PROCEDURE `paid_vacation_compute `( OUT p_返回值 INT(11) ,INOUT p_员工号 CHAR(3) ,p_操作者ID VARCHAR(3))PROC_START:BEGIN/* 变量声明 */DECLARE done INT; #异常退出控制变量DECLARE empNo CHAR(3); #员工号DECLARE dateHire date; #分公司就职日DECLARE workYears INT; #集团内工作年数DECLARE lastYearRemainDays FLOAT; #昨年残日数(允许以小时为单位休假)DECLARE nowYearleaveDays FLOAT; #今年休暇日数(允许以小时为单位休假)DECLARE elapseYear INT; #入集团经过年度数/* 游标声明 */#上年带薪休假数据DECLARE staffPaidVacationDaysCur CURSOR FORSELECT a.EMP_NO, #员工号a.DATE_HIRE, #入职日期a.WORK_YEARS, #工作年限b.REMAIN_DAYS # 上年带薪休假应休但未休残日数FROM T_EMPLOYEE AS a,T_PAID_VACATION AS bWHERE a. EMP_NO = b. EMP_NO/* 程序退出规定声明 */DECLARE CONTINUE HANDLER FOR NOT FOUND SET SET done = 1;DECLARE EXIT HANDLER FOR SQLWARNING SET done = 2;DECLARE CONTINUE HANDLER FOR SQLEXCEPTIONBEGINSET done = 3;ROLLBACK; #SQL异常回滚END;/* 1.输入参数妥当性检查 */IF (p_操作者 IS NULL OR p_操作者 = '') THENSET p_返回值 = 9;LEAVE PROC_START;END IF;SET done = 0;START TRANSACTION;loop_label:LOOP# 读入一条记录, 代入到各个变量中FETCH staffPaidVacationDaysCurINTO empNo, #员工号dateHire, #就职日workYears, #集团内工作年数lastYearRemainDays #昨年残日数;IF done = 1 THENLEAVE loop_label;END IF;/*根据集团内工作年限+分公司就职年限计算下一年度带薪天数*/ SET elapseYear = YEAR(current_timestamp)- Year(dateHire)+ workYears;IF elapseYear = 0 THENSET nowYearLeaveDays = 10;ELSEIF elapseYear = 1 THENSET nowYearLeaveDays = 11;ELSEIF elapseYear = 2 THENSET nowYearLeaveDays = 12;ELSEIF elapseYear = 3 THENSET nowYearLeaveDays = 14;ELSEIF elapseYear = 4 THENSET nowYearLeaveDays = 16;ELSEIF elapseYear = 5 THENSET nowYearLeaveDays = 18;ELSEIF elapseYear >= 6 THENSET nowYearLeaveDays = 20;END IF;SET done = 0;SET p_员工号= empNo;UPDATE T_PAID_VACATIONSETLAST_YEAR_REMAIN_DAYS = lastYearRemainDays,THIS_YEAR_BASE_DAYS = nowYearLeaveDays,UPDATE_DATETIME = current_timestamp,UPDATE_USER_ID = 'SYS',UPDATE_TERMINAL_ID = 'MANUAL'WHERE EMP_NO = CONVERT(empNo USING binary);IF done = 3 THENSET p_返回值 = 6;LEAVE PROC_START;END IF;END LOOP;COMMIT;END3.MySql函数例CREATE DEFINER=`DBuser`@`%` FUNCTION ` paid_vacation_compute `( p_员工号 CHAR(3) ,p_操作者ID VARCHAR(3))) RETURNS int(11)BEGIN/* 变量声明 */DECLARE done INT; #异常退出控制变量DECLARE empNo CHAR(3); #员工号DECLARE dateHire date; #分公司就职日DECLARE workYears INT; #集团内工作年数DECLARE lastYearRemainDays FLOAT; #昨年残日数(允许以小时为单位休假)DECLARE nowYearleaveDays FLOAT; #今年休暇日数(允许以小时为单位休假)DECLARE elapseYear INT; #入集团经过年度数/* 游标声明 */#上年带薪休假数据DECLARE staffPaidVacationDaysCur CURSOR FORSELECT a.EMP_NO, #员工号a.DATE_HIRE, #入职日期a.WORK_YEARS, #工作年限b.REMAIN_DAYS # 上年带薪休假应休但未休残日数FROM T_EMPLOYEE AS a,T_PAID_VACATION AS bWHERE a. EMP_NO = b. EMP_NO/* 程序退出规定声明 */DECLARE CONTINUE HANDLER FOR NOT FOUND SET SET done = 1;DECLARE EXIT HANDLER FOR SQLWARNING SET done = 2;DECLARE CONTINUE HANDLER FOR SQLEXCEPTIONBEGINSET done = 3;ROLLBACK; #SQL异常回滚END;/* 1.输入参数妥当性检查 */IF (p_操作者 IS NULL OR p_操作者 = '') THENRETURN 9;END IF;SET done = 0;START TRANSACTION;loop_label:LOOP# 读入一条记录, 代入到各个变量中FETCH staffPaidVacationDaysCurINTO empNo, #员工号dateHire, #就职日workYears, #集团内工作年数lastYearRemainDays #昨年残日数;IF done = 1 THENLEAVE loop_label;END IF;/*根据集团内工作年限+分公司就职年限计算下一年度带薪天数*/ SET elapseYear = YEAR(current_timestamp)- Year(dateHire)+ workYears;IF elapseYear = 0 THENSET nowYearLeaveDays = 10;ELSEIF elapseYear = 1 THENSET nowYearLeaveDays = 11;ELSEIF elapseYear = 2 THENSET nowYearLeaveDays = 12;ELSEIF elapseYear = 3 THENSET nowYearLeaveDays = 14;ELSEIF elapseYear = 4 THENSET nowYearLeaveDays = 16;ELSEIF elapseYear = 5 THENSET nowYearLeaveDays = 18;ELSEIF elapseYear >= 6 THENSET nowYearLeaveDays = 20;END IF;SET done = 0;SET p_员工号= empNo;UPDATE T_PAID_VACATIONSETLAST_YEAR_REMAIN_DAYS = lastYearRemainDays,THIS_YEAR_BASE_DAYS = nowYearLeaveDays,UPDATE_DATETIME = current_timestamp,UPDATE_USER_ID = 'SYS',UPDATE_TERMINAL_ID = 'MANUAL'WHERE EMP_NO = CONVERT(empNo USING binary);IF done = 3 THENRETURN 6;END IF;END LOOP;COMMIT;END4.MySql存储过程调用时的iBatis用Mapper例BaseInfoEditMapper.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE mapperPUBLIC"-////DTD Mapper 3.0//EN""/dtd/ibatis-3-mapper.dtd"><mapper namespace="com.xxx.web.mapper.base_info_edit"><select id="VacationProcedure"parameterType="VacationBean"statementType="CALLABLE"> { call paid_vacation_compute (#{ReturnValue,javaType=INTEGER, jdbcType=INTEGER, mode=OUT},#{StaffNumber,javaType=String, jdbcType=CHAR, mode=INOUT},#{HireDate,javaType=String, jdbcType=VARCHAR, mode=IN},#{OperateID,javaType=String, jdbcType=VARCHAR, mode=IN})}</select></mapper>5.MySql函数调用时的iBatis用Mapper例BaseInfoEditMapper.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE mapperPUBLIC"-////DTD Mapper 3.0//EN""/dtd/ibatis-3-mapper.dtd"><mapper namespace="com.xxx.web.mapper.base_info_edit"><select id="VacationProcedure"parameterType="VacationBean"statementType="CALLABLE"> { #{ReturnValue,javaType=INTEGER, jdbcType=INTEGER, mode=OUT} =call paid_vacation_compute (#{StaffNumber,javaType=String, jdbcType=CHAR, mode=IN},#{HireDate,javaType=String, jdbcType=VARCHAR, mode=IN},#{OperateID,javaType=String, jdbcType=VARCHAR, mode=IN} )} </select></mapper>6.JAVA调用例1(MySql存储过程和函数相同)package com.XXX.impl;import java.util.ArrayList;import java.util.List;import com.XXX.web.bean.VacationCreateBean;import com.XXX.web.dao.BaseInfoEditDAO;import com.XXX.web.util.BasicSqlSupport;public class BaseInfoEditDAOImpl extends BasicSqlSupport implements BaseInfoEditDAO { public boolean addBaseInfo(BaseInfoEditBean objUserInfo) throws Exception {boolean blnFlag=false;//成功FLAG;//全公司员工下一年度带薪休假一发赋予处理VacationCreateBean objVacationCreateBean = new VacationCreateBean();objVacationCreateBean.setStaffNumber(objUserInfo.getSTAFF_NUMBER());objVacationCreateBean.setHireDate(objUserInfo.getDATE_HIRE().toString());objVacationCreateBean.setOperateID(objUserInfo.getCREATE_USER_ID());objVacationCreateBean.setDhcWorkYearsShinKi(objUserInfo.getDHC_WORK_YEARS());String returnValue = (String)this.session.selectOne("com.XXX.web.mapper.base_info_edit.VacationProcedure", objVacationCreateBean);//System.out.println("staffNumber=" + objVacationCreateBean.getStaffNumber());//System.out.println("result=" + objVacationCreateBean.getReturnValue());//System.out.println("returnValue=" + returnValue);//追加結果の判断blnFlag=true;return blnFlag;}}7.処理DAO接口package com.XXX.web.dao;import java.util.List;import com.XXX.web.bean.BaseInfoEditBean;/*** 员工基本信息画面の処理DAO*/public interface BaseInfoEditDAO {public List<BaseInfoEditBean> selectAuthoriyList() throws Exception;public String selectStaffId() throws Exception;public int selectOpetateTimeNum(String strStaffNumber) throws Exception;public boolean addBaseInfo(BaseInfoEditBean objUserInfo) throws Exception;public boolean updateBaseInfo(BaseInfoEditBean objUserInfo) throws Exception;public BaseInfoEditBean searchBaseInfo(String strStaffNumber) throws Exception; }8.共同処理package com.XXX.web.util;import org.apache.ibatis.session.SqlSession;public class BasicSqlSupport{protected SqlSession session;public SqlSession getSession() {return session;}public void setSession(SqlSession session) {this.session = session;} }9. DAO与MAP间的交互BEANpackage com.XXX.web.bean;import java.io.Serializable;public class VacationCreateBean implements Serializable{private int ReturnValue;private String StaffNumber;private String HireDate;private String OperateID;private int WorkYearsShinKi;public int getReturnValue() {return ReturnValue;}public void setReturnValue(int returnValue) {ReturnValue = returnValue;}public String getStaffNumber() {return StaffNumber;}public void setStaffNumber(String staffNumber) {StaffNumber = staffNumber;}public String getHireDate() {return HireDate;}public void setHireDate(String hireDate) {HireDate = hireDate;}public String getOperateID() {return OperateID;}public void setOperateID(String operateID) {OperateID = operateID;}public int getDhcWorkYearsShinKi() {return dhcWorkYearsShinKi;}public void setDhcWorkYearsShinKi(int dhcWorkYearsShinKi) {this.dhcWorkYearsShinKi = dhcWorkYearsShinKi;}}10.通过MAIN函数进行调用package com.ohc.pms.batch;import java.io.FileInputStream;import java.io.IOException;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class VacationCreate {/**JDBC驱动名 */static String jdbcDriver = "com.mysql.jdbc.Driver";/**DB URL */static String dbURL = "jdbc:mysql://172.999.999.35:3306/empdb";/** DB用户名 */static String user = "empuser";/**DB密码 */static String pass = "empuser123";/**日志输出 */static protected Logger log = Logger.getLogger(VacationCreate.class );public static void main(String[] args) {Connection conn = null;CallableStatement stmt = null;try{PropertyConfigurator.configure(System.getProperty("user.dir") + "\\" + "log4j.properties");("実行路径:" + System.getProperty("user.dir"));String fileName = "jdbc.properties"; // 属性文件名Properties conf = new Properties();try {conf.load(new FileInputStream(System.getProperty("user.dir") + "\\" + "jdbc.properties"));} catch (IOException e) {System.err.println("Cannot open " + fileName + ".");e.printStackTrace();System.exit(-1); // 程序終了}// 读入jdbcDriver = conf.getProperty("driver");dbURL = conf.getProperty("url");user = conf.getProperty("user");pass = conf.getProperty("password");//JDBC driver登録Class.forName("com.mysql.jdbc.Driver");("DB连接。

java调用sql函数_java调用数据库中的函数和存储过程

java调用sql函数_java调用数据库中的函数和存储过程

java调用sql函数_java调用数据库中的函数和存储过程Java是一种常用的编程语言,用于开发各种类型的应用程序,包括与数据库进行交互的应用程序。

在Java程序中,我们可以使用JDBC(Java Database Connectivity)技术来连接和操作数据库。

通过JDBC,我们可以调用数据库中的函数和存储过程来执行一些特定的任务。

在Java中调用SQL函数和存储过程的基本步骤如下:2. 建立数据库连接:使用JDBC连接字符串、用户名和密码等相关参数来创建与数据库的连接。

JDBC提供了一个名为Connection的接口来表示与数据库的连接。

可以使用DriverManager类的静态方法getConnection来获取数据库连接对象。

```javaString username = "用户名";String password = "密码";Connection connection = DriverManager.getConnection(url, username, password);```3. 创建CallableStatement对象:CallableStatement是一个表示可以执行存储过程或函数的SQL语句的接口。

使用Connection对象的prepareCall方法创建一个CallableStatement对象。

```javaString sql = "{call 存储过程或函数名称(参数1, 参数2, ...)}";CallableStatement statement = connection.prepareCall(sql);```4. 设置参数:如果存储过程或函数需要输入参数,可以使用setXXX 方法设置参数的值。

XXX表示参数的数据类型,例如setInt、setString 等。

参数索引从1开始。

```javastatement.setString(1, "参数值");```5. 执行SQL语句:使用execute方法执行存储过程或函数。

JAVA调用存储过程

JAVA调用存储过程

CallableStatement对象为所有的DBMS提供了一种以标准形式调用已储存过程的方法。

已储存过程储存在数据库中。

对已储存过程的调用是CallableStatement对象所含的内容。

这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。

结果参数是一种输出(OUT)参数,是已储存过程的返回值。

两种形式都可带有数量可变的输入(IN参数)、输出(OUT参数)或输入和输出(INOUT参数)的参数。

问号将用作参数的占位符。

在JDBC中调用已储存过程的语法如下所示。

注意,方括号表示其间的内容是可选项;方括号本身并非语法的组成部份。

{call过程名[(?,?,...)]}返回结果参数的过程的语法为:{?=call过程名[(?,?,...)]}不带参数的已储存过程的语法类似:{call过程名}通常,创建CallableStatement对象的人应当知道所用的DBMS是支持已储存过程的,并且知道这些过程都是些什么。

然而,如果需要检查,多种DatabaseMetaData方法都可以提供这样的信息。

例如,如果DBMS支持已储存过程的调用,则supportsStoredProcedures方法将返回true,而getProcedures方法将返回对已储存过程的描述。

CallableStatement继承Statement的方法(它们用于处理一般的SQL语句),还继承了PreparedStatement的方法(它们用于处理IN参)。

CallableStatement中定义的所有方法都用于处理OUT参数或INOUT参数的输出部分:注册OUT参数的JDBC类型(一般SQL类型)、从这些参数中检索结果,或者检查所返回的值是否为JDBC NULL。

1、创建CallableStatement对象CallableStatement对象是用Connection方法prepareCall创建的。

jtds 存储过程 调用

jtds 存储过程 调用

jtds 存储过程调用Jtds是一个开源的JDBC驱动程序,它允许Java应用程序连接到Microsoft SQL Server和Sybase数据库。

在Java应用程序中,我们可以使用Jtds来调用存储过程。

存储过程是一组预编译的SQL语句,它们被存储在数据库中并可以被多次调用。

存储过程可以接受参数并返回结果,它们通常用于执行复杂的数据库操作,例如数据转换、数据验证和数据处理。

在Java应用程序中,我们可以使用Jtds来调用存储过程。

首先,我们需要创建一个Connection对象来连接到数据库。

然后,我们可以使用PreparedStatement对象来调用存储过程。

PreparedStatement对象是一个预编译的SQL语句,它可以接受参数并返回结果。

下面是一个使用Jtds调用存储过程的示例代码:```import java.sql.*;public class JtdsStoredProcedureExample {public static void main(String[] args) {try {// Connect to databaseString url = "jdbc:jtds:sqlserver://localhost:1433/mydatabase";String username = "myusername";String password = "mypassword";Connection conn = DriverManager.getConnection(url, username, password);// Call stored procedureString sql = "{call my_stored_procedure(?, ?)}";CallableStatement stmt = conn.prepareCall(sql);stmt.setString(1, "John");stmt.setString(2, "Doe");ResultSet rs = stmt.executeQuery();// Process result setwhile (rs.next()) {String firstName = rs.getString("first_name");String lastName = rs.getString("last_name");System.out.println(firstName + " " + lastName);}// Close resourcesrs.close();stmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}```在上面的示例代码中,我们首先创建一个Connection对象来连接到数据库。

java sqlserver中存储过程return返回值处理

java sqlserver中存储过程return返回值处理

java sqlserver中存储过程return返回值处理Java与SQL Server中存储过程的返回值处理一、介绍存储过程是一组预先编译的SQL语句集合,可以被视为一种数据库对象,用于执行一系列数据库操作。

在Java应用程序中与SQL Server数据库交互时,经常需要调用存储过程并处理其返回值。

本文将详细介绍在Java中如何调用SQL Server存储过程,并处理其返回值。

我们将按照以下步骤逐一分析。

二、创建存储过程首先,我们需要在SQL Server数据库中创建一个存储过程,用于演示和测试。

假设我们创建一个简单的存储过程,用于根据输入参数获取员工的姓名。

CREATE PROCEDURE GetEmployeeName@EmployeeID INT,@EmployeeName VARCHAR(100) OUTPUTASBEGINSELECT @EmployeeName = EmployeeNameFROM EmployeeWHERE EmployeeID = @EmployeeIDEND这个存储过程接受一个输入参数@EmployeeID,以及一个输出参数@EmployeeName。

它根据输入的员工ID查询数据库,将结果赋值给输出参数@EmployeeName。

三、Java代码中调用存储过程现在,我们可以在Java代码中调用SQL Server中的存储过程。

首先,我们需要建立与数据库的连接。

1. 导入相关的包和类import java.sql.*;2. 建立数据库连接String connectionString ="jdbc:sqlserver:localhost:1433;databaseName=YourDatabase;user=Your User;password=YourPassword";Connection connection =DriverManager.getConnection(connectionString);在上面的代码中,我们使用了JDBC驱动程序建立与数据库的连接。

mybatis sqlserver存储过程返回参数

mybatis sqlserver存储过程返回参数

mybatis sqlserver存储过程返回参数在 MyBatis 中调用存储过程并接收返回参数,可以使用resultMap 来映射返回的结果。

首先,在 MyBatis 的配置文件中配置 resultMap。

例如:```xml<resultMap id="resultMap" type="java.util.HashMap"><result property="param1" column="param1"jdbcType="VARCHAR"/><result property="param2" column="param2"jdbcType="INTEGER"/></resultMap>```然后,在映射的 SQL 语句中调用存储过程,并将返回值映射到 resultMap 中。

例如:```xml<select id="callStoredProcedure" statementType="CALLABLE"> {call stored_procedure_name(#{param1, mode=IN}, #{param2, mode=OUT, jdbcType=INTEGER})}</select>```最后,在 Java 代码中调用该 SQL 语句,并获取返回的参数。

例如:```javaMap<String, Object> params = new HashMap<>();params.put("param1", "input_param1");params.put("param2", null); // 此处为输出参数,初始值可为nullmybatisSession.selectOne("callStoredProcedure", params);String outputParam = (String) params.get("param1"); // 获取输出参数的值int returnValue = (Integer) params.get("param2"); // 获取返回值```注意,调用存储过程时,在 SQL 语句中使用 '{call ...}' 来调用存储过程,并使用 #{param, mode=IN} 和 #{param, mode=OUT, jdbcType=XXX} 定义参数的输入输出模式和类型。

ibatis调用存储过程

ibatis调用存储过程

ibatis调用存储过程iBatis是一种数据映射框架,用于简化Java应用程序与数据库之间的交互。

它允许开发人员将SQL查询和存储过程映射到Java方法,并提供了针对这些方法的自动参数传递和结果映射。

调用存储过程是一种在数据库中执行事先定义好的一组操作的方式。

存储过程允许在应用程序中调用并传递参数,并且可以返回结果集。

在iBatis中调用存储过程有以下几个步骤:1. 配置iBatis环境:首先我们需要在iBatis的配置文件中配置数据库连接信息。

这包括数据库驱动类,数据库URL,用户名和密码等。

```xml<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods"value="equals,clone,hashCode,toString"/></settings><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="url"value="jdbc:mysql://localhost:3306/mydb"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers></mappers>```2.定义存储过程:在数据库中创建存储过程。

java调用存储过程返回map组装List(含SqlServer存储过程)

java调用存储过程返回map组装List(含SqlServer存储过程)

Action层public ActionForward getProjectPayMoneyJsonByPayType(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {JiLiangZhiFuService jiLiangZhiFuService = this.getServiceLocator().getJiLiangZhiFuService();int year = Integer.parseInt(request.getParameter("year"));String data = jiLiangZhiFuService.getProjectPayMoneyJsonByPayType(year);response.setContentType("text/xml");response.getWriter().write(data);response.getWriter().flush();response.getWriter().close();return null;}Service层public String getProjectPayMoneyJsonByPayType(int year){double allTotal = 0;Map map = jiLiangZhiFuDao.getProjectPayMoneyByPayType(year);List<DataItem> dataItemList = SessionBean.getServiceLocator().getDataItemService().getAllDataItemByTypeId("payType");Map map_ep = new HashMap();map_ep.put("account_id", 2);map_ep.put("isSelectTwoStageProject", true);List<EngineeringPhase> engineeringPhaseList =SessionBean.getServiceLocator().getEngineeringPhaseService().getEngineeringPhaseList(map_ep).getData();Map map_type = new HashMap();StringBuilder sb = new StringBuilder();sb.append("<date><total>"+engineeringPhaseList.size()+"</total>");for(EngineeringPhase engineeringPhase:engineeringPhaseList){String ep_id = engineeringPhase.getEp_id();sb.append("<ProjectPayMoneyInfo>");sb.append("<ep_id>"+ep_id+"</ep_id>");sb.append("<ep_name>"+engineeringPhase.getEp_name()+"</ep_name>");for(DataItem dataItem:dataItemList){String di_id = dataItem.getId();String r_key = ep_id + "," + di_id;if(map.containsKey(r_key)){map_type.put(di_id, map_type.containsKey(di_id) ? (Double.parseDouble(map_type.get(di_id).toString()) + Double.parseDouble(map.get(r_key).toString())) : Double.parseDouble(map.get(r_key).toString()));sb.append("<"+di_id+">"+map.get(r_key)+"</"+di_id+">");}}//项目支付金额合计sb.append("<projectTotal>"+map.get(engineeringPhase.getEp_id())+"</projectTotal>");allTotal += Double.parseDouble(map.get(engineeringPhase.getEp_id()).toString());sb.append("</ProjectPayMoneyInfo>");}//某支付类别金额合计sb.append("<ProjectPayMoneyInfo>");sb.append("<ep_id></ep_id>");sb.append("<ep_name>合计</ep_name>");DecimalFormat df = new DecimalFormat("#.00");for(DataItem dataItem:dataItemList){sb.append("<"+dataItem.getId()+">"+String.format("%.2f", map_type.get(dataItem.getId()))+"</"+dataItem.getId()+">");}//各项目累计合计sb.append("<projectTotal>"+String.format("%.2f", allTotal)+"</projectTotal>");sb.append("</ProjectPayMoneyInfo>");sb.append("</date>");return sb.toString();}Dao层public Map getProjectPayMoneyByPayType(final int year) {try {return (Map)this.getHibernateTemplate().execute(new HibernateCallback(){public Object doInHibernate(Session session) throws HibernateException, SQLException {Connection con = session.connection();Statement stmt = con.createStatement();CallableStatement cs = con.prepareCall("{call proc_records(?)}");cs.setInt(1, year);//ResultSet rs = stmt.executeQuery("{call proc_records}");ResultSet rs = cs.executeQuery();Map map = new HashMap();while (rs.next()) {map.put(rs.getString(1), rs.getString(2));}rs.close();stmt.close();return map;}});} catch ( org.springframework.dao.DataAccessException e) {throw new DataAccessException(e.getMessage(),e);}}Sql:create procedure proc_records@year intasDECLARE@map_table table(r_key varchar(100),r_value varchar(50)) DECLARE@type_id varchar(40)DECLARE@type_name varchar(50)DECLARE@project_id varchar(40)DECLARE@project_name varchar(50)DECLARE@payTypeMoney numeric(16, 2)DECLARE@sumPayTypeMoney numeric(16, 2)BEGINset@payTypeMoney= 0set@sumPayTypeMoney= 0--查询项目列表DECLARE project_cursor CURSOR for select ep_id,ep_name from AB_engineeringPhase where account_id='2'open project_cursorfetch next from project_cursor into@project_id,@project_namewhile@@FETCH_STATUS= 0begin--查询项目支付类别DECLARE projectType_cursor CURSOR for select id,name from T_DataItem where typeId='payType'order by sort ascopen projectType_cursorfetch next from projectType_cursor into@type_id,@type_namewhile@@FETCH_STATUS= 0begin--业务逻辑处理处理内层游标--获取一个项目某一项支付类型的数据--查询一个项目某一支付类别金额select@payTypeMoney=sum(checkProjectPayMoney)from JiLiangZhiFu where projectId=@project_id and payType=@type_id and enterDate>CAST(@year as varchar(4))and enterDate<CAST(@year+1 as varchar(4))and type='outer' group by payType--一个项目某一支付类别金额存入insert into@map_table values(@project_id+','+@type_id,@payTypeMoney)--一个项目累计支付类别金额set@sumPayTypeMoney=@sumPayTypeMoney+@payTypeMoney--一个项目某一支付类别金额重置为set@payTypeMoney= 0fetch next from projectType_cursor into@type_id,@type_name--内层游标向下移动一行end--插入某一项目各个支付类别的金额合计insert into@map_table values(@project_id,@sumPayTypeMoney)set@sumPayTypeMoney= 0close projectType_cursordeallocate projectType_cursorfetch next from project_cursor into@project_id,@project_name--内层游标处理结束后,外层游标才继续向下移动一行endclose project_cursordeallocate project_cursorselect*from@map_tableEND。

JAVA方法的返回值类型解析

JAVA方法的返回值类型解析

JAVA方法的返回值类型解析方法的返回值类型是指方法在执行完毕后,返回给调用者的数据类型。

在Java中,返回值类型可以是任意的Java基本数据类型,也可以是对象类型。

Java的基本数据类型包括:byte、short、int、long、float、double、char和boolean,这些类型都是固定的,占用的内存大小也是固定的。

当方法的返回值类型是基本数据类型时,方法可以使用return语句将一个具体的值返回给调用者。

例如,以下是一个返回int类型的方法示例:```javapublic int add(int a, int b)return a + b;```在调用该方法时,可以通过接收返回值的变量来存储返回的结果:```javaint result = add(3, 4);System.out.println(result); // 输出 7```除了基本数据类型,Java还允许方法的返回值类型是对象类型。

对象类型可以是类、接口、数组等。

返回对象类型的方法在执行完毕后,会返回一个对象的引用,而不是对象本身。

对象的引用可以用于访问对象的属性和调用对象的方法。

例如,以下是一个返回对象类型的方法示例:```javapublic Date getCurrentDatDate currentDate = new Date(;return currentDate;```在调用该方法时,可以通过接收返回值的变量来存储返回的对象引用:```javaDate currentDate = getCurrentDate(;System.out.println(currentDate); // 输出当前日期```此外,Java还允许方法的返回值类型是void,表示方法没有返回值。

void类型的方法在执行完毕后,不会返回任何数据给调用者。

例如,以下是一个返回void类型的方法示例:```javapublic void printHellSystem.out.println("Hello");```在调用该方法时,不需要使用接收返回值的变量:```javaprintHello(; // 输出 Hello```需要注意的是,void类型的方法不能使用return语句返回值。

hibernate 调用存储过程 传参 获取返回值

hibernate 调用存储过程 传参 获取返回值

Hibernate调用存储过程传参获取返回值简介Hibernate是一个流行的Java持久化框架,它提供了一种将Java对象映射到关系型数据库的方式。

在某些情况下,我们可能需要调用存储过程来执行一些复杂的数据库操作。

本文将介绍如何使用Hibernate调用存储过程,并传递参数和获取返回值。

准备工作在开始之前,我们需要完成以下准备工作:1.安装Java JDK和Hibernate框架。

2.配置Hibernate的数据库连接信息,包括数据库驱动、URL、用户名和密码等。

3.创建数据库存储过程,并确保它已经在数据库中正确地定义和测试。

Hibernate映射文件在使用Hibernate调用存储过程之前,我们需要创建一个Hibernate映射文件来定义存储过程的调用。

下面是一个示例的映射文件:<hibernate-mapping><sql-query name="callStoredProcedure" callable="true">{ call my_stored_procedure(:param1, :param2) }</sql-query></hibernate-mapping>在上面的示例中,我们定义了一个名为”callStoredProcedure”的SQL查询,其中”callable”属性被设置为”true”,表示这是一个调用存储过程的查询。

存储过程的调用语法是{ call procedure_name(:param1, :param2) },其中”:param1”和”:param2”是存储过程的输入参数。

调用存储过程一旦我们有了Hibernate映射文件,我们就可以在Java代码中使用Hibernate来调用存储过程。

下面是一个示例代码:Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction();Query query = session.getNamedQuery("callStoredProcedure");query.setParameter("param1", value1);query.setParameter("param2", value2);query.executeUpdate();mit();在上面的示例中,我们首先获取Hibernate的Session对象,并开启一个事务。

存储过程的输出参数,返回值与结果集

存储过程的输出参数,返回值与结果集

存储过程的输出参数,返回值与结果集存储过程中可以定义输出变量,返回值,执⾏存储过程还能获得结果集。

每个存储过程都有默认的返回值,默认值为0。

下⾯我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在调⽤存储过程中如何获得输出参数,返回值以及结果集。

⾸先:在sql server management studio中查看输出参数,返回值以及结果集。

本⽰例以Northwind数据库为例。

1create proc Employee2@Rowcount int=0 output3as4begin5SELECT * FROM [Northwind].[dbo].[Employees]6set @Rowcount=@@ROWCOUNT7end运⾏以上存储过程的代码如下:输出的结果如下:可以看出是通过EXEC @return_value = [dbo].[Employee] @Rowcount = @MyOutput OUTPUT中的return_value变量来获得返回值,⽽⽤MyOutput变量来获得了输出变量值,此处的MyOutput变量相当于引⽤传递!接下来将讨论调⽤存储过程中如何获得输出参数,返回值以及结果集。

9 para.Direction = ParameterDirection.Output;10 cmd.Parameters.Add(para);11 cmd.Parameters.Add("@return_value", SqlDbType.Int, 4);12 cmd.Parameters["@return_value"].Direction = ParameterDirection.ReturnValue;13 con.Open();14 cmd.ExecuteNonQuery();15 Response.Write(cmd.Parameters["@Rowcount"].Value.ToString()+"<br/>");16 Response.Write(cmd.Parameters["@return_value"].Value.ToString());17 }此处定义了Rowcount输出变量,以及return_value返回值变量。

groovy调用存储过程获取返回记录

groovy调用存储过程获取返回记录

groovy调用存储过程获取返回记录1. 引言1.1 概述本文将介绍如何使用Groovy调用存储过程来获取返回记录。

存储过程是一种数据库对象,它包含一系列的SQL语句并可在数据库服务器上执行。

通过调用存储过程,我们可以实现对数据库中的数据进行操作和查询。

1.2 文章结构本文分为五个主要部分:引言、Groovy调用存储过程的基本原理、调用存储过程获取返回记录的步骤、实例演示与代码展示以及结论和展望。

在“引言”部分中,我们将介绍本文所涉及的主题以及文章的整体结构。

接下来,在“Groovy调用存储过程的基本原理”部分,我们将详细探讨Groovy与存储过程结合的优势以及它们之间的工作原理。

然后,在“调用存储过程获取返回记录的步骤”部分,我们将解释在Groovy中如何一步步地执行并处理存储过程,并从中获取返回结果。

接着,在“实例演示与代码展示”部分,我们将设计一个示例存储过程,并编写相应的Groovy代码来调用和解析返回结果。

最后,在“结论和展望”部分,我们将对全文内容进行总结回顾,并对Groovy 调用存储过程的未来发展进行展望和思考。

1.3 目的本文的目的是帮助读者了解Groovy如何调用存储过程,并提供详细的步骤和示例代码。

通过学习本文,读者将能够掌握在Groovy中使用存储过程的基本技巧,并且能够灵活运用这些技巧解决实际问题。

同时,我们也对Groovy调用存储过程的未来发展做出一定的展望,以启发读者进一步深入研究和应用这个领域。

2. Groovy调用存储过程的基本原理2.1 存储过程简介存储过程是一组预编译的SQL语句,被封装为一个可重复使用的程序单元。

它们通常在数据库服务器上执行,可以接收输入参数并返回结果。

2.2 Groovy与存储过程结合的优势Groovy是一种强大的动态语言,它为开发人员提供了灵活性和简洁性,并且与Java代码无缝集成。

当需要调用存储过程时,Groovy可以通过JDBC连接到数据库,并以简洁的方式执行和处理返回结果。

存储过程的返回参数

存储过程的返回参数

存储过程的返回参数存储过程是在数据库中预先存储的一组SQL语句的集合,可以一次性执行一组SQL语句,并返回一个结果集或者一个值。

存储过程的返回参数指的是存储过程执行完成后返回的结果。

一、存储过程的返回参数类型1.输出参数:存储过程执行完成后将结果返回给调用者。

输出参数必须在存储过程中被明确地声明,并在存储过程中赋予一个值。

输出参数可以是任何数据类型,包括基本数据类型、自定义数据类型、表类型等。

2.结果集:存储过程可以返回一个或多个结果集,每个结果集可以包含零行或多行数据。

存储过程的返回结果集通常用于获取查询的结果。

3.返回值:存储过程可以返回一个整数值作为结果。

返回值是在存储过程执行期间使用RETURN语句返回的,可以用于表示存储过程的执行状态或者其他有意义的数值。

二、存储过程的输出参数使用方法1.在创建存储过程时,可以使用OUT关键字声明输出参数。

例如:CREATE PROCEDURE proc_name (OUT param_name data_type)BEGIN...END;2.在存储过程中,可以使用SET语句给输出参数赋值。

例如:SET param_name = value;3.在调用存储过程时,可以通过使用OUT关键字获取输出参数的值。

例如:三、存储过程的结果集使用方法1.在存储过程中,可以使用SELECT语句获取结果集。

例如:SELECT column1, column2, ... FROM table_name WHERE condition;2.在调用存储过程时,可以使用FETCH语句获取结果集。

例如:CALL proc_name(;FETCH FROM proc_name INTO variable1, variable2, ...;四、存储过程的返回值使用方法1.在存储过程中,可以使用RETURN语句返回一个整数值。

例如:RETURN0;2.在调用存储过程时,可以使用SET语句获取返回值。

java 返回string 的方法

java 返回string 的方法

java 返回string 的方法Java是一种面向对象的编程语言,广泛应用于软件开发领域。

在Java中,有许多方法可以返回字符串。

本文将介绍几种常见的方法,以及它们的功能和用法。

我们可以使用字符串字面值来返回一个字符串。

字符串字面值是由双引号括起来的一串字符。

例如,我们可以使用以下代码返回一个简单的字符串:```javapublic String getString() {return "Hello, World!";}```这个方法将返回一个包含"Hello, World!"的字符串。

我们可以通过调用该方法来获取这个字符串,并将其赋值给一个变量,如下所示:```javaString str = getString();System.out.println(str);```输出结果将是"Hello, World!"。

除了使用字符串字面值,我们还可以使用字符串连接符来返回一个字符串。

字符串连接符是一个加号(+),用于将两个字符串连接在一起。

例如,我们可以使用以下代码返回一个由两个字符串连接而成的新字符串:```javapublic String concatenateStrings(String str1, String str2) {return str1 + str2;}```这个方法将接受两个字符串作为参数,并返回它们的连接结果。

我们可以通过调用该方法来获取连接后的字符串,如下所示:```javaString str = concatenateStrings("Hello, ", "World!"); System.out.println(str);```输出结果将是"Hello, World!"。

除了使用字符串字面值和字符串连接符,我们还可以使用字符串构造器来返回一个字符串。

java方法返回值用法

java方法返回值用法

java方法返回值用法Java方法返回值用法是当我们进行开发时必不可少的知识点之一。

在Java中,方法的返回值用于指定该方法执行后返回的数据类型。

方法的返回值可以为基本类型数据或引用类型数据。

下面将分步骤阐述Java方法返回值的用法:第一步:声明方法的返回值类型在Java中,声明一个方法的返回值类型是通过在方法名之后添加一个类型名称来实现的。

例如,如果我们需要声明一个方法返回整数,则需要在方法名之后添加关键字"int"。

public int multiply(int x, int y) {int result = x * y;return result;}在上述示例代码中,multiply方法声明为int类型的方法,表示它将返回一个整数值。

第二步:返回数据每当方法执行完成后,可以通过使用return关键字来返回数据。

当方法需要返回多个值时,可以使用数组或对象类型返回值。

例如:public int[] getArray() {int[] arr = {1, 2, 3, 4, 5};return arr;}在上述示例代码中,getArray方法声明为int[]类型的方法,并返回一个包含5个整数的数组。

第三步:调用方法获取返回值要获取方法的返回值,可以在方法调用语句中使用变量来存储该值。

例如:int result = multiply(5, 10);System.out.println(result);在上述示例代码中,我们调用了multiply方法并将其结果赋给result变量,然后将它打印到控制台上。

第四步:处理方法返回的空值有时候,我们需要声明一个方法的返回值为空。

在Java中,可以使用void关键字来实现这一点。

例如:public void printName(String name) {System.out.println("My name is " + name);}在上述示例代码中,printName方法没有声明一个返回值类型。

java 返回方法

java 返回方法

java 返回方法Java 返回方法在Java编程语言中,返回方法(Return Method)是指在方法中使用关键字return来返回一个值。

一个方法可以有返回值,也可以没有返回值。

有返回值的方法可以在调用它的地方接收返回的值,而没有返回值的方法只能执行一些操作而无法返回结果。

返回方法的语法格式如下:```public 返回值类型方法名(参数列表) {// 方法体return 返回值;}```其中,返回值类型是指方法返回的结果的数据类型;方法名是方法的名称;参数列表是方法接收的参数,可以有多个参数,也可以没有参数;方法体是方法的具体实现过程;return关键字用于返回一个值。

在实际开发中,返回方法有很多应用场景。

下面将介绍一些常见的返回方法的用法。

1. 返回基本数据类型的方法返回基本数据类型的方法可以返回一个具体的数值,如整数、浮点数、布尔值等。

例如,下面的方法用于计算两个整数的和,并返回结果:```public int sum(int a, int b) {int result = a + b;return result;}```在调用这个方法时,可以接收返回的结果,如:```int result = sum(3, 4);System.out.println(result); // 输出7```2. 返回引用数据类型的方法返回引用数据类型的方法可以返回一个对象,如数组、字符串、自定义类等。

例如,下面的方法用于创建一个长度为n的整数数组,并返回该数组:```public int[] createArray(int n) {int[] array = new int[n];for (int i = 0; i < n; i++) {array[i] = i + 1;}return array;}```在调用这个方法时,可以接收返回的数组,如:```int[] array = createArray(5);for (int i = 0; i < array.length; i++) {System.out.println(array[i]); // 输出1 2 3 4 5}```3. 返回布尔值的方法返回布尔值的方法可以根据特定的条件返回true或false。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.List;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
/**
* java调用存储过程
*
* @author Administrator
*
*/
public classJavaCallPro{
/**
* @paramargs
* @throws Exception
*/
public static void main(String[]args) throws Exception {
// TODO Auto-generated method stub
ResultSetMetaDatarm=rs.getMetaData();
intcolumnNums=rm.getColumnCount();
String[] t = null;
while (rs.next()) {
list.add(t = new String[columnNums]);
for (inti= 1;i<=columnNums;i++) {
packagecom.utour.util;
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.ResultSetMetaData;
t[i- 1] =rs.getString(i);
}
}
ct.close();
return list;
}
private static StringtestOutParams() throws Exception {
// TODO Auto-generated method stub
Connection ct = null;
// TODO Auto-generated method stub
List<String[]> list = newArrayList<String[]>();
Connection ct = null;
StringdbURL= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ADMIN";
c.setString(2, "2001");
c.execute();
Stringsss=c.getString(1);
ct.close();
returnsss;
}
}
String s =testOutParams();
System.out.p<String[]> list = test();
//
//for(inti=0;i<list.size();i++){
//String[]dd=list.get(i);
//String aa1 =dd[0];
Class.forName(drv);
ct =DriverManager.getConnection(dbURL, user,pwd);
CallableStatementc =ct.prepareCall("{callADMIN.DBO.test_pro(?,?)}");
c.registerOutParameter(1,java.sql.Types.VARCHAR);
StringdbURL= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ADMIN";
String user = "admin";
Stringpwd= "Admin";
Stringdrv= "com.microsoft.sqlserver.jdbc.SQLServerDriver";
CallableStatementc =ct.prepareCall("{call UTRDW.DBO.SP_TEST_SELECTTABLE(?,?)}");
c.setString(1, "U1003");
c.setString(2, "20140521");
ResultSetrs=c.executeQuery();
String user = "admin";
Stringpwd= "Admin";
Stringdrv= "com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(drv);
ct =DriverManager.getConnection(dbURL, user,pwd);
//String aa2 =dd[1];
//String aa3 =dd[2];
//
//System.out.println("aa1====="+aa1+"-----aa2====="+aa2+"----aa3====="+aa3);
//
//}
}
private static List<String[]> test() throws Exception {
相关文档
最新文档