mysql创建 存储过程 并通过java程序调用该存储过程
create table users_ning(id primary key auto_increment,pwd int);
insert into users_ning values(id,1234);
insert into users_ning values(id,12345);
insert into users_ning values(id,12);
insert into users_ning values(id,123); CREATE PROCEDURE login_ning(IN p_id int,IN p_pwd int,OUT flag int)
BEGIN
DECLARE v_pwd int;
select pwd INTO v_pwd from users_ning
where id = p_id;
if v_pwd = p_pwd then set flag:=1; else
select v_pwd;
set flag := 0;
end if;
END package demo20130528;
import java.sql.*; import demo20130526.DBUtils; /**
* 測试JDBC API调用过程
* @author tarena
*
*/
public class ProcedureDemo2 { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println(login(123, 1234));
}
/**
* 调用过程,实现登录功能
* @param id 考生id
* @param pwd 考试密码
* @return if成功:1; if密码错:0; if没实用户:-1
* @throws Exception
*/
public static int login(int id, int pwd) throws Exception{
int flag = -1;
String sql = "{call login_ning(?,? ,?)}";//*****
Connection conn = DBUtils.getConnMySQL();
CallableStatement stmt = null;
try{
stmt = conn.prepareCall(sql);
//传递输入參数
stmt.setInt(1, id);
stmt.setInt(2, pwd);
//注冊输出參数,第三个占位符的数据类型是整型
stmt.registerOutParameter(3, Types.INTEGER);//*****
//运行过程
stmt.execute();
//获得过程运行后的输出參数
flag = stmt.getInt(3);//***** }catch(Exception e){
e.printStackTrace();
}finally{
stmt.close();
DBUtils.dbClose();
} return flag;
} }
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
package demo20130526; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class DBUtils {
<span style="white-space:pre"> </span>static Connection conn = null;
<span style="white-space:pre"> </span>static PreparedStatement stmt = null;
<span style="white-space:pre"> </span>static ResultSet rs = null;
<span style="white-space:pre"> </span>static Statement st = null;
<span style="white-space:pre"> </span>static String username = null;
<span style="white-space:pre"> </span>static String password = null;
<span style="white-space:pre"> </span>static String url = null;
<span style="white-space:pre"> </span>static String driverName = null; <span style="white-space:pre"> </span>public static Connection getConnMySQL() throws Exception {// 连接mysql 返回conn
<span style="white-space:pre"> </span>getUrlUserNamePassWordClassNameMySQL();
<span style="white-space:pre"> </span>conn = DriverManager.getConnection(url, username, password);
<span style="white-space:pre"> </span>// conn.setAutoCommit(false);设置自己主动提交为false
<span style="white-space:pre"> </span>return conn;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static Connection getConnORCALE() throws Exception {// 连接orcale
<span style="white-space:pre"> </span>// 返回conn
<span style="white-space:pre"> </span>getUrlUserNamePassWordClassNameORCALE();
<span style="white-space:pre"> </span>conn = DriverManager.getConnection(url, username, password);
<span style="white-space:pre"> </span>// conn.setAutoCommit(false);
<span style="white-space:pre"> </span>return conn;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static void getUrlUserNamePassWordClassNameORCALE()
<span style="white-space:pre"> </span>throws Exception {
<span style="white-space:pre"> </span>// 从资源文件 获取 orcale的username password url等信息
<span style="white-space:pre"> </span>Properties pro = new Properties();
<span style="white-space:pre"> </span>File path = new File("src/all.properties");
<span style="white-space:pre"> </span>pro.load(new FileInputStream(path));
<span style="white-space:pre"> </span>String paths = pro.getProperty("filepath");
<span style="white-space:pre"> </span>File file = new File(paths + "orcale.properties");
<span style="white-space:pre"> </span>getFromProperties(file); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getUrlUserNamePassWordClassNameMySQL() throws Exception {
<span style="white-space:pre"> </span>// 从资源文件 获取mysql的username password url等信息
<span style="white-space:pre"> </span>Properties pro = new Properties();
<span style="white-space:pre"> </span>File path = new File("src/all.properties");
<span style="white-space:pre"> </span>pro.load(new FileInputStream(path));
<span style="white-space:pre"> </span>String paths = pro.getProperty("filepath");
<span style="white-space:pre"> </span>File file = new File(paths + "mysql.properties");
<span style="white-space:pre"> </span>getFromProperties(file);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getFromProperties(File file) throws IOException,
<span style="white-space:pre"> </span>FileNotFoundException, ClassNotFoundException {// 读资源文件的内容
<span style="white-space:pre"> </span>Properties pro = new Properties();
<span style="white-space:pre"> </span>pro.load(new FileInputStream(file));
<span style="white-space:pre"> </span>username = pro.getProperty("username");
<span style="white-space:pre"> </span>password = pro.getProperty("password");
<span style="white-space:pre"> </span>url = pro.getProperty("url");
<span style="white-space:pre"> </span>driverName = pro.getProperty("driverName");
<span style="white-space:pre"> </span>Class.forName(driverName);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void dbClose() throws Exception {// 关闭所有
<span style="white-space:pre"> </span>if (rs != null)
<span style="white-space:pre"> </span>rs.close();
<span style="white-space:pre"> </span>if (st != null)
<span style="white-space:pre"> </span>st.close();
<span style="white-space:pre"> </span>if (stmt != null)
<span style="white-space:pre"> </span>stmt.close();
<span style="white-space:pre"> </span>if (conn != null)
<span style="white-space:pre"> </span>conn.close();
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static ResultSet getById(String tableName, int id) throws Exception {// 用id来查询结果
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>rs = st.executeQuery("select * from " + tableName + " where id=" + id
<span style="white-space:pre"> </span>+ " ");
<span style="white-space:pre"> </span>return rs;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static ResultSet getByAll(String sql, Object... obj)
<span style="white-space:pre"> </span>throws Exception {// 用keyword 实现查询 keyword额能够随意
<span style="white-space:pre"> </span>sql = sql.replaceAll(";", "");
<span style="white-space:pre"> </span>sql = sql.trim();
<span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql);
<span style="white-space:pre"> </span>String[] strs = sql.split("\\? ");// 将sql 以? 非开
<span style="white-space:pre"> </span>int num = strs.length;// 得到? 的个数
<span style="white-space:pre"> </span>int size = obj.length;
<span style="white-space:pre"> </span>for (int i = 1; i <= size; i++) {
<span style="white-space:pre"> </span>stmt.setObject(i, obj[i - 1]);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>if (size < num) {
<span style="white-space:pre"> </span>for (int k = size + 1; k <= num; k++) {
<span style="white-space:pre"> </span>stmt.setObject(k, null);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>rs = stmt.executeQuery();
<span style="white-space:pre"> </span>return rs;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doInsert(String sql) throws SQLException {// 传入 sql 语句
<span style="white-space:pre"> </span>// 实现插入操作
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>st.execute(sql);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doInsert(String sql, Object... args) throws Exception {// 传入參数
<span style="white-space:pre"> </span>// 利用
<span style="white-space:pre"> </span>// PreparedStatement
<span style="white-space:pre"> </span>// 实现插入
<span style="white-space:pre"> </span>// 传入的參数是随意多个 由于有Object 。。。 args
<span style="white-space:pre"> </span>int size = args.length;// 获得 Object ...obj 传过来的參数的个数
<span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql);
<span style="white-space:pre"> </span>for (int i = 1; i <= size; i++) {
<span style="white-space:pre"> </span>stmt.setObject(i, args[i - 1]);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>stmt.execute();
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static int doUpdate(String sql) throws Exception {// 传入 sql 实现更新操作
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>int num = st.executeUpdate(sql);
<span style="white-space:pre"> </span>return num;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doUpdate(String sql, Object... obj) throws Exception {
<span style="white-space:pre"> </span>// 传入參数 利用 PreparedStatement实现更新
<span style="white-space:pre"> </span>// 传入的參数是随意多个 由于有Object 。。 。args
<span style="white-space:pre"> </span>int size = obj.length;// 获得 Object ...obj 传过来的參数的个数
<span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql);
<span style="white-space:pre"> </span>for (int i = 1; i <= size; i++) {
<span style="white-space:pre"> </span>stmt.setObject(i, obj[i - 1]);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>stmt.executeUpdate(sql);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static boolean doDeleteById(String tableName, int id)
<span style="white-space:pre"> </span>throws SQLException {// 删除记录 by id
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>boolean b = st.execute("delete from " + tableName + " where id=" + id
<span style="white-space:pre"> </span>+ "");
<span style="white-space:pre"> </span>return b;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static boolean doDeleteByAll(String sql, Object... args)
<span style="white-space:pre"> </span>throws SQLException {// 删除记录 能够按不论什么keyword
<span style="white-space:pre"> </span>sql = sql.replaceAll(";", "");
<span style="white-space:pre"> </span>sql = sql.trim();
<span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql);
<span style="white-space:pre"> </span>String[] strs = sql.split("\\? ");// 将sql 以? 非开
<span style="white-space:pre"> </span>int num = strs.length;// 得到?的个数
<span style="white-space:pre"> </span>int size = args.length;
<span style="white-space:pre"> </span>for (int i = 1; i <= size; i++) {
<span style="white-space:pre"> </span>stmt.setObject(i, args[i - 1]);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>if (size < num) {
<span style="white-space:pre"> </span>for (int k = size + 1; k <= num; k++) {
<span style="white-space:pre"> </span>stmt.setObject(k, null);// 数组下标从0開始
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>boolean b = stmt.execute();
<span style="white-space:pre"> </span>return b;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getMetaDate() throws Exception {// 获取数据库元素数据
<span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE();
<span style="white-space:pre"> </span>DatabaseMetaData dmd = conn.getMetaData();
<span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseMajorVersion());
<span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseProductName());
<span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseProductVersion());
<span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseMinorVersion());
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static String[] getColumnNamesFromMySQL(String sql) throws Exception {
<span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL();
<span style="white-space:pre"> </span>return getColumnName(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static String[] getColumnNamesFromOrcale(String sql)
<span style="white-space:pre"> </span>throws Exception {
<span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE();
<span style="white-space:pre"> </span>return getColumnName(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static String[] getColumnName(String sql) throws Exception {// 返回表中所有的列名
<span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE();
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>rs = st.executeQuery(sql);
<span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData();
<span style="white-space:pre"> </span>int num = rsmd.getColumnCount();
<span style="white-space:pre"> </span>System.out.println("ColumnCount=" + num);
<span style="white-space:pre"> </span>String[] strs = new String[num];
<span style="white-space:pre"> </span>// 显示列名
<span style="white-space:pre"> </span>for (int i = 1; i <= rsmd.getColumnCount(); i++) {
<span style="white-space:pre"> </span>String str = rsmd.getColumnName(i);
<span style="white-space:pre"> </span>strs[i - 1] = str;
<span style="white-space:pre"> </span>System.out.print(str + "\t");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return strs;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnDataFromMySQL(String sql) throws Exception {// 输出表中的数据
<span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL();
<span style="white-space:pre"> </span>getColumnData(sql);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnDataFromORCALEL(String sql) throws Exception {// 输出表中的数据
<span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE();
<span style="white-space:pre"> </span>getColumnData(sql);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnData(String sql) throws Exception {// 输出表中的数据
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>rs = st.executeQuery(sql);
<span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData();
<span style="white-space:pre"> </span>System.out
<span style="white-space:pre"> </span>.println("\n------------------------------------------------------------------------------------------------------------------------");
<span style="white-space:pre"> </span>while (rs.next()) {
<span style="white-space:pre"> </span>for (int i = 1; i <= rsmd.getColumnCount(); i++) {
<span style="white-space:pre"> </span>System.out.print(rs.getString(i) + "\t");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out.println();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out
<span style="white-space:pre"> </span>.println("------------------------------------------------------------------------------------------------------------------------"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getTableDataFromOrcale(String sql) throws Exception {// 输出表的列名
<span style="white-space:pre"> </span>// 和表中的所有数据
<span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE();
<span style="white-space:pre"> </span>getTableData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getTableDataFromMysql(String sql) throws Exception {// 输出表的列名
<span style="white-space:pre"> </span>// 和表中的所有数据
<span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL();
<span style="white-space:pre"> </span>getTableData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static void getTableData(String sql) throws SQLException {
<span style="white-space:pre"> </span>// getTableDataFromMysql
<span style="white-space:pre"> </span>// getTableDataFromOrcale
<span style="white-space:pre"> </span>st = conn.createStatement();
<span style="white-space:pre"> </span>rs = st.executeQuery(sql);
<span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData();
<span style="white-space:pre"> </span>int num = rsmd.getColumnCount();
<span style="white-space:pre"> </span>System.out.println("ColumnCount=" + num);
<span style="white-space:pre"> </span>String[] strs = new String[num];
<span style="white-space:pre"> </span>// 显示列名
<span style="white-space:pre"> </span>for (int i = 1; i <= rsmd.getColumnCount(); i++) {
<span style="white-space:pre"> </span>String str = rsmd.getColumnName(i);
<span style="white-space:pre"> </span>strs[i - 1] = str;
<span style="white-space:pre"> </span>System.out.print(str + "\t");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out
<span style="white-space:pre"> </span>.println("\n------------------------------------------------------------------------------------------------------------------------");
<span style="white-space:pre"> </span>while (rs.next()) {
<span style="white-space:pre"> </span>for (int i = 1; i <= rsmd.getColumnCount(); i++) {
<span style="white-space:pre"> </span>System.out.print(rs.getString(i) + "\t");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out.println();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out
<span style="white-space:pre"> </span>.println("------------------------------------------------------------------------------------------------------------------------");
<span style="white-space:pre"> </span>}
}
mysql创建 存储过程 并通过java程序调用该存储过程的更多相关文章
- java程序调用存储过程
java程序调用存储过程 PL/SQL子程序,很多情况下是给应用程序来调用的,所有我们要掌握使用其他编程语言来调用我们写好的存储过程.下面我们介绍下使用java调用Oracle的存储过程. ...
- java程序调用存储过程和存储函数
java程序调用存储过程 jdbcUtil.java文件 package cn.itcast.oracle.utils; import java.sql.Connection; import java ...
- 通过java程序调用ant build.xml配置文件中指定的target
一.概述 通过ant实现项目的自动化部署,jar包生成,替换,tomcat关停.启动,查看项目日志: 通过java程序调用已编辑好的ant脚本build.xml配置文件中指定的target: 文中文件 ...
- 【原】Java程序调用远程Shell脚本
此程序的目的是执行远程机器上的Shell脚本. [环境参数]远程机器IP:192.168.234.123用户名:root密码:rootShell脚本的路径:/home/IFileGenTool/Bak ...
- Java程序调用带参数的shell脚本返回值
Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: - \)$ Shell本身的PID(ProcessI ...
- Derby安装,创建数据库,在Java程序中使用Derby
1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹, ...
- 转载:java程序调用内存的变化过程
前文知道了java程序运行时在内存中的大概分布,但是对于具体程序是如何运行的,看到一篇文章,直接转载过来. (一)不含静态变量的java程序运行时内存变化过程分析 代码: package oop; / ...
- java程序调用kettle
(1).将相应的kettle的jar包导入的java项目,主要的jar包有一下几个. (2).java程序. package cn.com.taiji.oosweb.test.web; import ...
- java代码调用数据库存储过程
由于前边有写java代码调用数据库,感觉应该把java调用存储过程也写一下,所以笔者补充该篇! package testSpring; import java.sql.CallableStatemen ...
随机推荐
- CoCoS 2D-JS的开发环境搭建
CoCoS 2D-JS的开发环境搭建 在Hbuilder中新建web项目,将cocos2d-js-v3.9.js复制到在js文件夹下,将project.json复制到工程的根目录下 在index.ht ...
- HDU-4849 Wow! Such City!,最短路!
Wow! Such City! 题意:题面很难理解,幸亏给出了提示,敲了一发板子过了.给出x数组y数组和z数组的求法,并给出x.y的前几项,然后直接利用所给条件构造出z数组再构造出C数组即可,C ...
- Python 频繁读取Mysql相关问题
1.需要频繁select大量数据,时间长.消耗内存大,如何解决mysql性能问题? 如果对返回的结果数量没有要求,可以控制返回的数量: cursor.fetchmany(size=1000) 这样是只 ...
- Web Services 教程
Web Services 可使您的应用程序成为 Web 应用程序. Web Services 通过 Web 进行发布.查找和使用. Web Services 是应用程序组件 Web Services ...
- hdu4035 Maze (树上dp求期望)
dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...
- HDU4405-Aeroplane chess(概率DP求期望)
Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled from 0 to N. Hzz start ...
- Python脚本实现单据体首行过滤
编写的Python脚本 可以看到,实际代码只有3句,即实现单据体首行过滤代码(其实最最主要的是无需写组件动态即时注册),并有注册到[采购订单]"表单构建插件"上.界面运行时,实际效 ...
- Codeforces983E. NN country
新鲜出炉! $n \leq 200000$的树,给$m \leq 200000$条链,$q \leq 200000$个询问,每次问一条询问链最少用m条中的几条给定链覆盖其所有边,可能无解. 首先确定一 ...
- Aspose.Words使用代码插入表格
Aspose.Words是一款功能强大的word文档处理控件,在不需要安装word的条件下,可进行word的创建,修改,转换等操作. Aspose.Words可以简单使用该产品提供的DocumentB ...
- 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683
本文原创于 2014-02-12 09:26. 今复习之用,有新体会,故重新编辑. 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有 ...