php存储mysql显示出来教程_简单使用MySQL的存储过程

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 简单使用MySQL的存储过程 MySQL5.0版本引进了存储过程的概念。存储过程可以提高执行效率,更容易维护。 在没有存储过程(procedure)概念之前,通常的业务逻辑sql代码有时很长,它们一般被嵌入在宿主

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

简单使用MySQL的存储过程

MySQL5.0版本引进了存储过程的概念。存储过程可以提高执行效率,更容易维护。

在没有存储过程(procedure)概念之前,通常的业务逻辑sql代码有时很长,它们一般被嵌入在宿主语言(比如Java)中,非常不便于维护,而有了存储过程,它们被定义在数据库端,并且进行了预编译。而且业务逻辑SQL代码无需在网络中传输,减轻了网络负担。可以说存储过程的优点大于它的缺点。

下面实现一个简单的加法存储过程。

[sql]

mysql> delimiter $

mysql> create procedure pr_add (a int , b int)

-> begin

-> declare c int;

-> if a is null then

-> set a = 0;

-> end if;

-> if b is null then

-> set b = 0;

-> end if;

-> set c = a + b;

-> select c as sum;

-> end;

-> $

在命令行模式中运行存储过程:

[sql]

mysql> delimiter ;

mysql> set @a = 10;

Query OK, 0 rows affected (0.00 sec)

mysql> set @b = 20;

Query OK, 0 rows affected (0.00 sec)

mysql> call pr_add(@a,@b);

+------+

| sum |

+------+

| 30 |

+------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

在客户端执行存储过程:

[java]

public class ProcedureTest {

private static final String DB_URL = "jdbc:mysql://localhost:3306/zjut";

private static final String DRIVER = "com.mysql.jdbc.Driver";

private static final String USER = "root";

private static final String PASSWORD = "XXXXX";

private static String sql = "call pr_add(?,?)";

public static void main(String[] args) {

try {

Class.forName(DRIVER);

Connection conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);

CallableStatement cstmt = conn.prepareCall(sql);

cstmt.setInt(1,10);

cstmt.setInt(2, 20);

ResultSet rs = cstmt.executeQuery();

while(rs.next()) {

System.out.println(rs.getInt("sum"));

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

关键代码是:

[java]

CallableStatement cstmt = conn.prepareCall("call pr_add(?,?)");

cstmt.setInt(1,10);

cstmt.setInt(2, 20);

ResultSet rs = cstmt.executeQuery();

输出:

30

原理:首先创建SQL字符串,即 "call pr_add(?,?)" ,调用存储过程用call命令,call命令后跟存储过程名字,两个问号是占位符。

使用Connection对象创建CallableStatement对象,即 conn.prepareCall(sql); 该方法接受一个字符串,代表一个sql语句。

再用CallableStatement对象的executeQuery()执行SQL语句,返回一个ResultSet对象。

利用ResultSet对象遍历得到的数据。

test.jsp?url=http%3A%2F%2Fwww.chinaitlab.com%2Fcms%2Fimages%2Flogo14.gif&refer=http%3A%2F%2FLinux.chinaitlab.com%2FMYSQL%2F919082.html

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值