• Java JDBC调用存储过程:无参、输入带参、输出及输出带参


    Java JDBC调用存储过程:无参、输入带参、输出及输出带参

    示例代码:

    package xzg;
     
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
     
    public class JDBCtest {
        public static void main(String[] args) {
            //test();
            //test2();
            test3();
        }
       /*
        * 命令行创建的存储过程函数为: create procedure all_user() select * from user;
        *    创建一个查询所有内容的存储过程
        * 调用无参存储过程
        */
        static void test() {
            Connection conn = Dbutil.open();
            try {
                //存储过程函数固定格式:{call xxx}
                CallableStatement cs = conn.prepareCall("{call all_user()}");
                ResultSet rs = cs.executeQuery();
                while (rs.next()) {
                    int id = rs.getInt(1);
                    String name = rs.getString(2);
                    int age = rs.getInt(3);
                    System.out.println(id + "," + name + "," + age);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                Dbutil.close(conn);
            }
        }
           /*
            * 命令行创建的存储过程函数为:
            * create procedure insert_user(in myname varchar(20),
            * in myage tinyint(20)) insert user(username,age) values(myname,myemail);
    *  表示创建一个插入myname,数据类型为varchar(20); myage,数据类型为tinyint(20)的存储过程
            * 调用输入带参存储过程
            */
        static void test2() {
            Connection conn = Dbutil.open();
            try {
                CallableStatement cs = conn.prepareCall("{call insert_user(?,?)}");
                cs.setString(1, "jack");
                cs.setInt(2, 10);
                cs.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                Dbutil.close(conn);
            }
        }
           /*
            * 命令行创建的存储过程函数为:
            *  create procedure getnamebyid(in cid int,
            * out return_name varchar(20)) select username into return_name
            * from user where id =cid;
            * 表示创建一个如果id为cid,那么就输出返回一个return_name
            * 调用输入、输出带参存储过程
            */
        static void test3() {
            Connection conn = Dbutil.open();
            try {
                CallableStatement cs = conn.prepareCall("{call getnamebyid(?,?)}");
                cs.setInt(1, 3);  //索引1,第3个id
                //输出参数的话要注册
                cs.registerOutParameter(2, Types.CHAR);
                //注册后要更新
                cs.execute();
                String name =cs.getString(2);  //这个是索引的意思
                cs.executeQuery();
                System.out.println(name);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                Dbutil.close(conn);
            }
        }
    }
  • 相关阅读:
    在 Debian 中安装 fcitx 输入法
    Windows XP字体模糊
    Aptana 行号
    硬盘安装Ubuntu 12.04
    更新系统时跳过某个软件包
    最小化安装CentOS 6.3
    使用config自定义配置
    获取指定文件夹内的文件
    把数据导出到的Excel文件
    web页面上通过后台弹出消息框的几种方式
  • 原文地址:https://www.cnblogs.com/lizm166/p/10318680.html
Copyright © 2020-2023  润新知