(6) JDBC的CallableStatement对象使用

来源:互联网 发布:米尔斯海默 知乎 编辑:程序博客网 时间:2024/06/01 08:55

调用数据库中的存储过程,可以使用CallableStatement对象。

通过Connection对象的prepareCall()方法,创建CallableStatement对象,

调用存储过程

通过execute()或executeQuery()方法执行。


eg:

1. 建表

CREATE TABLE `t_user_main` (  `oid` varchar(32) NOT NULL COMMENT '主键',  `userName` varchar(255) DEFAULT NULL COMMENT '用户名',  `userPwd` varchar(255) DEFAULT NULL COMMENT '登陆密码',  PRIMARY KEY (`oid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 插入数据

INSERT INTO t_user_main (oid, userName,userPwd)VALUES ('1','one','111111'),('2','two','222222');

3. 编写测试的存储过程

# 每次调用,插入一条测试数据DELIMITER $$CREATE PROCEDURE user_main_pro()BEGIN  INSERT INTO t_user_main (oid, userName, userPwd)   VALUES (REPLACE(UUID(),'-',''), 'testPro', 'test000000');END $$DELIMITER;

4. java代码调用存储过程

package com.lanhuigu.JavaBase.jdbc;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;public class JDBCCallableStatement {public static void main(String[] args) {String user = "root";        String password = "lanhuigu";        /*         * useUnicode=true:表示使用Unicode字符集          * characterEncoding=UTF8:字符编码方式          * allowMultiQueries=true:是否允许批量处理          */        String url = "jdbc:mysql://127.0.0.1:3306/lanhuigu_web?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true";        String driver = "com.mysql.jdbc.Driver";                 try {            //1.加载驱动程序            Class.forName(driver);            //2.建立连接            Connection conn = DriverManager.getConnection(url, user, password);            //3.创建CallableStatement对象            CallableStatement cs = conn.prepareCall("{call user_main_pro()}");            //4.执行调用存储过程            ResultSet rs = cs.executeQuery();            //5.打印查询结果                        //6.关闭连接            conn.close();        } catch (Exception e) {            System.out.println("数据库连接失败");        }}}

当运行程序之后,可以看到t_user_main表中多了一条测试数据。

原创粉丝点击