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 ...
随机推荐
- [uiautomator篇] 找父亲节点和其他兄弟节点
https://testerhome.com/topics/1250 Appium [已解决] UiSelector 如何根据节点定位到父节点 / 兄弟节点? liqing380 · 发布于 2014 ...
- PAT天梯赛练习题——L3-003. 社交集群(并查集按秩合并)
L3-003. 社交集群 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在社交网络平台注册时,用户通常会输入自己的兴趣爱好, ...
- Codeforces Round Rockethon 2015
A. Game 题目大意:A有N1个球,B有N2个球,A每次可以扔1-K1个球,B每次可以扔1-K2个球,谁先不能操作谁熟 思路:.....显然每次扔一个球最优.... #include<ios ...
- 刷题总结——mayan游戏(NOIP2011提高组day2T3)
题目: 题目背景 NOIP2011提高组 DAY1 试题. 题目描述 Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个 7 行 5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...
- 启动uwsgi报错error while loading shared libraries: libpcre.so.1:
启动uwsgi时候报错: [root@ richie]# /usr/bin/uwsgi --ini /usr/local/nginx/conf/uwsgi.ini /usr/bin/uwsgi: er ...
- ecplise 使用快捷键
1. [ALT+/] 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ALT+/]快捷键带来的好处吧. 2. ...
- bzoj2286 (sdoi2011)消耗战(虚树)
[Sdoi2011]消耗战 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4052 Solved: 1463[Submit][Status][Dis ...
- 查看Linux版本的方法
1)命令: lsb_release -a [root@localhost tmp]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noar ...
- MYsql 锁详解 锁 与索引的关系
原文:http://blog.csdn.net/xifeijian/article/details/20313977#t10 mysql innodb的锁是通过锁索引来实现的. select ...
- 有关WebView开发问题(转)
http://blog.sina.com.cn/s/blog_8241e8510101btvk.html 如何创建WebView: 1.添加权限:AndroidManifest.xml中必须使用许可& ...