`
siashuayongsheng
  • 浏览: 122632 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

存储过程大全

阅读更多
连接数据库,JDBC-ODBC数据源,及java调用存储过程
需用到的包java.sql.*; 
<一>java连接
1)加载驱动:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//java
Class.forName("sun.jdbc.odbc.jdbcodbcDriver");//jdbc-odbc数据源
2)建立连接:Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名","用户名","密码");//java
Connection conn=DriverManager.getConnection("jdbc;odbc;数据源名称","用户名","密码");
3)数据存放:Statement stm=conn.createStatement();
stm.executeUpdate(SQL语句);
如果有结果集:ResultSet rs=stm.executeQuery(SQL语句);
while(rs.next())
{
}
rs.getString();//取某列的值
获得列数:ResultSetMetaData meta=rs.getMetaData();
          for(int i=1;i<=meta.getColumnCount();i++)
          {
               System.out.print(rs.getString(i));
          }
4)关闭:rs.close();stm.close();conn.close();
<二>用prepareStatement代替Statament
例:添加 PreparaStatement pt=null;
       pt=conn.prepareStatement("insert into student values(?,?,?)");
       pt.setString(1,name);//为参数赋值
       pt.setInt(2,age);//同上
       pt.setString(3,sex);//同上
       int num=pt.executeUpdate();//num表示影响的行数,除查询外,都要用executeUpdate
       System.out.print(num);
<三>java调用存储过程--CallableStatement
1)无参
  CallableStatement call=null;
  call.conn.prepareCall("{call 存储过程名}");
  rs=call.executeQuery();
  while(rs.next())
  {
  }
关闭call,rs,conn
2)带输入参数
  call=conn.prepareCall("{call prco_chaxunById(?)}");
  call.setInt(1,id);//为输入参数赋值
  rs=call.executeQuery();//查询语句要用executeQuery
  if(rs.next()){System.out.println(rs.getString(2));}
  else{System.out.println(no data);}
关闭call,rs,conn
3)带输出参数
  call=conn.prepareCall("{call proc_getNameById(?,?)}");
  call.setInt(1,id);
  call.registerOutParameter(2,java.sql.Types.VARCHAR);//为输出参数赋值
  call.execute();带输出参数的用execute
  String name=call.getString(2);
  System.out.print(name);
关闭call,conn
注:关闭时要将代码放入finally中




















(转载)java调用存储过程
一、调用存储过程(无结果集返回)
        Connection connection = ConnectionHelper.getConnection();

        CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?,?) }");

        callableStatement.setString(1, "xxxxxxxx");
        callableStatement.setString(2, "xxxxxxxx");

        callableStatement.execute();

    //获得sql的消息并输出,这个估计很多人都需要
        SQLWarning sqlWarning = callableStatement.getWarnings();
        while (sqlWarning != null) {
            System.out.println("sqlWarning.getErrorCode() = " + sqlWarning.getErrorCode());
            System.out.println("sqlWarning.getSQLState() = " + sqlWarning.getSQLState());
            System.out.println("sqlWarning.getMessage() = " + sqlWarning.getMessage());

            sqlWarning = sqlWarning.getNextWarning();
        }

        //close
        ConnectionHelper.closeConnection(callableStatement, connection);

二、调用存储过程,返回sql类型数据(非记录集)

        Connection connection = ConnectionHelper.getConnection();

        CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?,?,?) }");

        callableStatement.setString(1, "xxxxxxxx");
        callableStatement.setString(2, "xxxxxxxx");
    //重点是这句1
    callableStatement.registerOutParameter(3, Types.INTEGER);

        callableStatement.execute();

    //取返回结果,重点是这句2
        //int rsCount = callableStatement.getInt(3);


        //close
        ConnectionHelper.closeConnection(callableStatement, connection);

三、重点来了,返回记录集,多记录集
注意,不需要注册返回结果参数,只需要在sql中select出结果即可
例如:select * from tableName
即可得到返回结果


        Connection connection = ConnectionHelper.getConnection();

        CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?) }");

    //此处参数与结果集返回没有关系
        callableStatement.setString(1, "xxxxxxxx");

        callableStatement.execute();

    ResultSet resultSet = callableStatement.getResultSet();
    //以上两个语句,可以使用ResultSet resultSet = callableStatement.executeQuery();替代

    //多结果返回
        ResultSet resultSet2;
        if (callableStatement.getMoreResults()) {
            resultSet2 = callableStatement.getResultSet();
            while (resultSet2.next()) {

            }
        }

        //close
        ConnectionHelper.closeConnection(callableStatement, connection);

提示:多结果返回可以使用如下代码(以上主要让大家明白,单一结果和多结果的区别):
        Boolean hasMoreResult = true;
        while (hasMoreResult) {
            ResultSet resultSet = callableStatement.getResultSet();
            while (resultSet.next()) {
       
            }

            hasMoreResult = callableStatement.getMoreResults();
        }
分享到:
评论

相关推荐

    Sybase ASE存储过程大全

    很全面的sybase资料集合,包括了创建修改删除的所有东西,也包括一些的语法和运算,对初学者很方便

    asp调用存储过程大全

    很好的一个学习ASP调用存储过程的示例,前五个示例,我做了都通过。后几个没有做

    ASP存储过程使用大全

    ### ASP存储过程使用大全 #### 一、概述 在ASP(Active Server Pages)环境中使用存储过程可以极大地提高数据处理效率及安全性。存储过程是预先编译好的SQL代码块,存储在数据库服务器上,通过参数调用执行特定...

    SAP HANA 中调试存储过程

    SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...

    SqlServer存储过程及调试指南

    1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...

    pb调用存储过程

    在IT行业中,数据库操作是日常开发中的重要环节,而存储过程是数据库中一种高效、封装性强的预编译语句集合。本问题涉及到的是在PowerBuilder(简称Pb)环境中如何调用Oracle或SQL Server等数据库中的存储过程。以下...

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    Informatica调用存储过程图文流程

    Informatica调用存储过程图文流程 Informatica 是一款功能强大的数据集成工具,能够帮助用户快速、可靠地集成各种数据源。调用存储过程是 Informatica 中的一种常用功能,下面将详细介绍 Informatica 调用存储过程...

    db2 存储过程语法与实例

    DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...

    存储过程文档--mysql

    存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...

    Oracle存储过程返回结果集

    在Oracle数据库中,存储过程是一种预编译的SQL和PL/SQL代码集合,可以执行复杂的业务逻辑或数据处理任务。当需要从存储过程中返回多个结果时,通常会使用结果集。本篇将深入探讨如何在Oracle存储过程中创建并返回一...

    存储过程参数查看器存储过程助手

    存储过程参数查看器和存储过程助手是两个非常实用的工具,它们帮助数据库管理员(DBA)和开发人员更有效地管理和调试存储过程。 1. **存储过程**: - 存储过程是由用户创建的一组SQL语句,保存在数据库中,可以多...

    PostgreSQL 存储过程调试

    本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...

    存储过程写法,存储过程

    根据提供的文档标题、描述、标签以及部分内容,我们可以总结出以下关于存储过程的创建与使用的相关知识点。 ### 一、存储过程的基本概念 存储过程是一种在数据库中存储并编译好的SQL程序,它能够接受输入参数,...

    pl sql developer调试存储过程及调试包中创建的存储过程

    PL/SQL Developer 调试存储过程及调试包中创建的存储过程 PL/SQL Developer 调试存储过程是指使用 PL/SQL Developer 工具来调试 Oracle 数据库中的存储过程。调试存储过程可以帮助开发者快速地定位和解决存储过程...

    数据库查询的存储过程

    数据库查询的存储过程 数据库查询的存储过程是数据库管理系统中一种非常重要的概念。它可以将多个SQL语句组合成一个单元,提高数据库的查询效率和性能。 存储过程的优点: 1. 可以在单个存储过程中执行一系列SQL...

    SQLServer存储过程转为oracle存储过程的工具

    可以将SQL Server存储过程转为oracle存储过程的工具

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...

    SQL Server存储过程

    **SQL Server 存储过程详解** SQL Server 存储过程是一种预编译的数据库对象,它集合了一系列的SQL语句和控制流语句,用于执行特定的数据库操作。存储过程的作用在于提高数据库的性能和安全性,减少网络流量,提供...

Global site tag (gtag.js) - Google Analytics