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 ...
随机推荐
- Flutter 发布APK时进行代码/资源混淆的坑
Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因 ...
- 在ubuntu上安装npm
sudo apt install npm 执行上面的安装命令,会报错: Reading package lists... Done Building dependency tree Reading s ...
- Distimo发布新SDK 帮助开发者跟踪应用下载转换率
著名应用分析机构Distimo近日刚刚发布了新的SDK,可以帮助开发者更好地跟踪应用下载转换率,同时也可以帮助开发者更好地了解多个在线营销活动的表现. Distimo发布的新工具叫做“Distimo ...
- USACO Runaround Numbers
题目大意:问最近的比n大的循环数是多少 思路:第n遍暴力大法好 /*{ ID:a4298442 PROB:runround LANG:C++ } */ #include<iostream> ...
- 刷题总结——二叉苹果树(ssoj树形dp+记忆化搜索)
题目: 题目背景 URAL:http://acm.timus.ru/problem.aspx?space=1&num=1018 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说 ...
- 常州模拟赛d3t1 神在夏至祭降下了神谕
题目描述 我们村子在过去的400年中,断绝与下界的接触,过着自给自足的生活. 夏至祭是一场迎接祖灵于夏季归来,同时祈求丰收的庆典. 村里的男人会在广场上演出夏之军和冬之军的战争.夏之军会打倒冬之军的大 ...
- java面试题之什么是死锁、活锁、饿死和竞态条件?
死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去: 活锁:是指两个线程优先级相同,都礼让不走,就这样一直僵持下去: 饿死:在 ...
- mongodb的安装及环境配置
一 下载 官网:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.6.3-signed.msi 官网可能打不开, ...
- Linux(14):集群架构进阶 --- CentOS 7
CentOS 7 CentOS 7 管理软件常用命令: vim /etc/selinux/config # 修改 SELINUX 开机自启动与否 setenforce 0 # 关闭 SELINUX g ...
- Windows下ElasticSearch的使用方式 CURL+Cygwin+Head插件
Windows使用ElasticSearch的命令方法 一.CURL(不推荐) 下载curl安装包,解压到指定目录,在命令行运行解压后的exe文件. 二.Cygwin(推荐) 安装Windows下类l ...