mysql 5.5 Java调用存储过程

Sql代码 复制代码  收藏代码
  1. # 创建并选择数据库   
  2. create database mydata;   
  3. use mydata   
  4.   
  5. # 显示数据库   
  6. show databases;   
  7. # 显示表   
  8. show tables;   
  9. # 查看表   
  10. desc 表的名字;   
  11.   
  12. # 客户表   
  13. create table customers   
  14. (   
  15. cust_id int primary key, #主键   
  16. cust_name varchar(20),   
  17. cust_emil varchar(50)   
  18. );   
  19.   
  20. # 订单表   
  21. create table orders   
  22. (   
  23. orders_num int primary key,   
  24. orders_date datetime,   
  25. cust_id int, #客户id 外键   
  26. foreign key (cust_id) references customers(cust_id)   
  27. );   
  28.   
  29. insert into prod values (1, 'm''apq''20''1998-02-28');   
  30. commit;   
  31.   
  32. select * from prod;   
  33.   
  34. # 删除表   
  35. drop table orders;   
  36.   
  37. # 删除表数据   
  38. delete from orders where orders_num=100; #删除一行   
  39. delete from orders; #删除表里的所有数据   
  40.   
  41. # 自动递增字段   
  42. create table article   
  43. (   
  44. id int primary key auto_increment,   
  45. title varchar(10)   
  46. );   
  47.   
  48. # 自动递增字段表里插入数据   
  49. insert into article (title) values('a');   
  50. insert into article (title) values('b');   
  51. +----+-------+   
  52. | id | title |   
  53. +----+-------+   
  54. |  1 | a     |   
  55. |  2 | b     |   
  56. +----+-------+   
  57.   
  58. select * from prod limit 0,2;   
  59. select * from prod order by prod_id desc limit 3,2;   
  60.   
  61. # 日期格式化   
  62. select date_format(now(), '%y-%m-%d %h:%i:%s');   
  63.   
  64. 可以显示数据库的编码   
  65. show create table table_name;   
  66.   
  67. 在写SQL语句之前,请加上这一句,以保证前台和后台的编码一致   
  68. set names gbk;   
  69. MySql安装目录下,请找到my.ini文件,在[mysql]下面把编码改成gbk, 在[mysqld]下面   
  70. 编码改成utf8 这样以后就不用写set names gbk了!!之后重启MYSql   
  71. [mysql]   
  72. # 客户端的编码   
  73. default-character-set=gbk   
  74. [mysqld]   
  75. # 服务器端的编码   
  76. default-character-set=utf8  
# 创建并选择数据库
create database mydata;
use mydata

# 显示数据库
show databases;
# 显示表
show tables;
# 查看表
desc 表的名字;

# 客户表
create table customers
(
cust_id int primary key, #主键
cust_name varchar(20),
cust_emil varchar(50)
);

# 订单表
create table orders
(
orders_num int primary key,
orders_date datetime,
cust_id int, #客户id 外键
foreign key (cust_id) references customers(cust_id)
);

insert into prod values (1, 'm', 'apq', '20', '1998-02-28');
commit;

select * from prod;

# 删除表
drop table orders;

# 删除表数据
delete from orders where orders_num=100; #删除一行
delete from orders; #删除表里的所有数据

# 自动递增字段
create table article
(
id int primary key auto_increment,
title varchar(10)
);

# 自动递增字段表里插入数据
insert into article (title) values('a');
insert into article (title) values('b');
+----+-------+
| id | title |
+----+-------+
|  1 | a     |
|  2 | b     |
+----+-------+

select * from prod limit 0,2;
select * from prod order by prod_id desc limit 3,2;

# 日期格式化
select date_format(now(), '%y-%m-%d %h:%i:%s');

可以显示数据库的编码
show create table table_name;

在写SQL语句之前,请加上这一句,以保证前台和后台的编码一致
set names gbk;
MySql安装目录下,请找到my.ini文件,在[mysql]下面把编码改成gbk, 在[mysqld]下面
编码改成utf8 这样以后就不用写set names gbk了!!之后重启MYSql
[mysql]
# 客户端的编码
default-character-set=gbk
[mysqld]
# 服务器端的编码
default-character-set=utf8


Sql代码 复制代码  收藏代码
  1. # 创建存储过程(不带参数的)   
  2. delimiter //   
  3. create procedure user_avg()   
  4. begin  
  5.     select avg(money) as avg_money from user;   
  6. end //   
  7. delimiter ;   
  8.   
  9. # 调用存储过程   
  10. call user_avg();   
  11.   
  12. # 删除存储过程   
  13. drop procedure if exists user_avg;   
  14.   
  15. -------------------------------------   
  16. # 创建存储过程(带参数的), out是输出值   
  17. delimiter //   
  18. create procedure proce(   
  19.     out low decimal(8, 2),   
  20.     out high decimal(8, 2),   
  21.     out average decimal(8, 2)   
  22. )   
  23.   
  24. begin  
  25.     select min(money) from user into low;   
  26.     select max(money) from user into high;   
  27.     select avg(money) from user into average;   
  28. end //   
  29. delimiter ;   
  30.   
  31. # 调用存储过程   
  32. call proce(@low, @high, @average);   
  33.   
  34. # 检索   
  35. select @low;   
  36. select @high;   
  37. select @average;   
  38. select @low, @high, @average;   
  39.   
  40. -------------------------------------   
  41. # 创建存储过程(带参数的), in是输入值   
  42. create table products   
  43. (   
  44.     id int primary key auto_increment,   
  45.     name varchar(30),   
  46.     price float,   
  47.     quantity int  
  48. );   
  49.   
  50. insert into products(name, price, quantity) values('umbrella', 20.0, 5);   
  51. insert into products(name, price, quantity) values('knife', 200.0, 10);   
  52. insert into products(name, price, quantity) values('trousers', 300.0, 20);   
  53.   
  54. delimiter //   
  55. create procedure ordertotal(   
  56.     in number int,   
  57.     out total decimal(8, 2)   
  58. )   
  59. begin  
  60.     select sum(price * quantity) from products where id = number into total;   
  61. end //   
  62. delimiter ;   
  63.   
  64. call ordertotal(1, @sum);   
  65. select @sum;   
  66.   
  67. -------------------------------------   
  68. # 显示所有存储过程   
  69. show procedure status;   
  70. # 删除存储过程   
  71. drop procedure if exists ordertotal;   
  72. -------------------------------------   
  73.   
  74. -------------------------------------   
  75. # \. D:\\SQL\\procedure.sql   
  76. -------------------------------------   
  77.   
  78. public class Procedure {   
  79.   
  80.     public static void main(String[] args) throws Exception {   
  81.         orderTotal("umbrella", 1); //umbrella: 100.0   
  82.         orderTotal("knife", 2); //knife: 2000.0   
  83.         orderTotal("trousers", 3); //trousers: 6000.0   
  84.     }   
  85.        
  86.     static void orderTotal(String nameint id) throws Exception {   
  87.         Connection conn = null;   
  88.         CallableStatement cs = null;   
  89.         ResultSet rs = null;   
  90.         try {   
  91.             conn = JdbcUtils.getConnection();   
  92.             //创建语句   
  93.             String sql = "{ call ordertotal(?,?) }";   
  94.             cs = conn.prepareCall(sql);   
  95.             //注册输出参数   
  96.             cs.registerOutParameter(2, Types.DECIMAL);   
  97.             cs.setInt(1, id);   
  98.             cs.executeUpdate();   
  99.                
  100.             //拿出输出参数   
  101.             float total = cs.getFloat(2);   
  102.             System.out.println(name + ": " + total);   
  103.         } finally {   
  104.             JdbcUtils.free(rs, cs, conn);   
  105.         }   
  106.     }   
  107.   
  108. }  

你可能感兴趣的:(mysql)