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 ...
随机推荐
- 紫书第五章训练3 D - Throwing cards away I
D - Throwing cards away I Given is an ordered deck of n cards numbered 1 to n with card 1 at the top ...
- 九度oj 题目1024:畅通工程
题目描述: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道 ...
- 01-封装函数求斐波那契数列第n项
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【Luogu】P2953牛的数字游戏(博弈论)
题目链接 自己乱搞……然后一遍AC啦! 思路从基本的必胜态和必败态开始分析.我们把减去最大数得到的数叫作Max,减去最小数得到的数叫作Min. 那么开始分析. 一.0是必败态. 这个没法解释.题目就这 ...
- [LA3620]Manhattan Wiring
[LA3620]Manhattan Wiring 试题描述 输入 输出 输入示例 输出示例 数据规模及约定 见“输入” 题解 我们把“连线”的过程改为“铺地砖”的过程,总共有 11 种地砖,每种地砖上 ...
- [BZOJ4992] [Usaco2017 Feb]Why Did the Cow Cross the Road(spfa)
传送门 把每个点和曼哈顿距离距离它3步或1步的点连一条边,边权为3 * t + a[x][y] 因为,走3步,有可能是3步,也有可能是1步(其中一步拐了回来) 最后,把终点和曼哈顿距离距离它1步和2布 ...
- [BZOJ1589] [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果(tarjan缩点 + 记忆化搜索)
传送门 先用tarjan缩点,再记忆话搜索一下 #include <stack> #include <cstdio> #include <cstring> #inc ...
- 刷题总结——魔术球问题(ssoj最小路径覆盖+网络流)
题目: 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2 ,3,… 的球.(1)每次只能在某根柱子的最上面放球.(2)在同一根柱子中,任何 2 个相邻球的编号之和为 ...
- JS return false 与 return true
在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符 ...
- EC++学习笔记(一) 习惯c++
条款01:c++多范式编程语言 条款02:尽量以 const, enum, inline 替换#define 1. 提供类型安全检查 2. 去除函数调用开销 3. 避免宏的二义性 const doub ...