`

MySQl存储过程学习及其在Java中的调用

    博客分类:
  • java
阅读更多

转载自  http://yoyo08.iteye.com/blog/474915

 

使用存储过程的好处就不说了,下面简要说一下存储过程的使用。

 

1. 首先,创建一个新表,用于后面Java代码中的测试。

 

Java代码 复制代码
  1. create table a    
  2. (   
  3.     id int(10) not null,   
  4.     name varchar(20) not null  
  5.   
  6. )ENGINE=MyISAM DEFAULT CHARSET=utf8;  
create table a 
(
	id int(10) not null,
	name varchar(20) not null

)ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

2. 向表中插入一些数据。

 

Java代码 复制代码
  1. insert into a ( `id`, `name` ) values ('1''best');   
  2. insert into a ( `id`, `name` ) values ('2''great');   
  3. insert into a ( `id`, `name` ) values ('3''china');   
  4. insert into a ( `id`, `name` ) values ('4''beijing');  
insert into a ( `id`, `name` ) values ('1', 'best');
insert into a ( `id`, `name` ) values ('2', 'great');
insert into a ( `id`, `name` ) values ('3', 'china');
insert into a ( `id`, `name` ) values ('4', 'beijing');

 

3. 修改MySQL中的默认换行符";"为'##'。

 

 

Java代码 复制代码
  1. delimiter ##  
delimiter ##

 

4. 创建一个带有一个输出参数的存储过程。

 

Java代码 复制代码
  1. create procedure hello(out num int)   
  2. begin   
  3. select Max(id) into num from a;   
  4. end##  
create procedure hello(out num int)
begin
select Max(id) into num from a;
end##

 

5. 创建一个带有两个输出参数的存储过程。

 

Java代码 复制代码
  1. create procedure hello2(out num int, out str varchar(20))   
  2. begin   
  3. select Max(id) into num from a;   
  4. select name from a where a.id = num into str;   
  5. end##  
create procedure hello2(out num int, out str varchar(20))
begin
select Max(id) into num from a;
select name from a where a.id = num into str;
end##

 

6. 将MySQL的换行符修改回";"。

 

Java代码 复制代码
  1. delimiter ;  
delimiter ;

 

7. Java程序中的调用。

 

Java代码 复制代码
  1. package cn.lifx.util.procedure;   
  2.   
  3. import java.sql.CallableStatement;   
  4. import java.sql.Connection;   
  5. import java.sql.DriverManager;   
  6. import java.sql.Types;   
  7.   
  8. public class Test    
  9. {   
  10.     String url = "jdbc:mysql://127.0.0.1:3306/test";    
  11.     String name = "root";   
  12.     String password = "china";   
  13.        
  14.     public static void main(String[] args)   
  15.     {   
  16.         Test test = new Test();   
  17.            
  18.         test.proc();   
  19.            
  20.         test.proc2();   
  21.     }   
  22.        
  23.     public Connection getConnection()    
  24.     {   
  25.         Connection con = null;   
  26.            
  27.         try  
  28.         {   
  29.             Class.forName("com.mysql.jdbc.Driver");   
  30.                
  31.             con = DriverManager.getConnection(url, name, password);   
  32.                
  33.         }catch(Exception e){    
  34.             e.printStackTrace();   
  35.         }   
  36.            
  37.         return con;   
  38.     }   
  39.        
  40.     public void proc()   
  41.     {   
  42.         Connection conn = getConnection();   
  43.         CallableStatement stmt = null;   
  44.            
  45.         try  
  46.         {   
  47.             stmt = conn.prepareCall("{call hello(?)}");       
  48.             stmt.registerOutParameter(1, Types.INTEGER);   
  49.             stmt.execute();   
  50.                
  51.             int i = stmt.getInt(1);   
  52.                
  53.             System.out.println(i);   
  54.                
  55.         }catch(Exception e){   
  56.             e.printStackTrace();   
  57.                
  58.         }finally  
  59.         {   
  60.             try    
  61.             {   
  62.                 stmt.close();   
  63.                 conn.close();   
  64.                    
  65.             }catch (Exception e) {   
  66.                 e.printStackTrace();   
  67.             }   
  68.         }   
  69.     }   
  70.        
  71.     public void proc2()   
  72.     {   
  73.         Connection conn = getConnection();   
  74.         CallableStatement stmt = null;   
  75.            
  76.         try  
  77.         {   
  78.             stmt = conn.prepareCall("{call hello2(?, ?)}");       
  79.             stmt.registerOutParameter(1, Types.INTEGER);   
  80.             stmt.registerOutParameter(2, Types.VARCHAR);   
  81.             stmt.execute();   
  82.                
  83.             int i = stmt.getInt(1);   
  84.             String str = stmt.getString(2);   
  85.                
  86.             System.out.println(i + " " + str);   
  87.                
  88.         }catch(Exception e){   
  89.             e.printStackTrace();   
  90.                
  91.         }finally  
  92.         {   
  93.             try    
  94.             {   
  95.                 stmt.close();   
  96.                 conn.close();   
  97.                    
  98.             }catch (Exception e) {   
  99.                 e.printStackTrace();   
  100.             }   
  101.         }   
  102.     }   
  103. }     
package cn.lifx.util.procedure;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;

public class Test 
{
	String url = "jdbc:mysql://127.0.0.1:3306/test"; 
    String name = "root";
    String password = "china";
    
    public static void main(String[] args)
    {
        Test test = new Test();
        
        test.proc();
        
        test.proc2();
    }
    
    public Connection getConnection() 
    {
        Connection con = null;
        
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            
            con = DriverManager.getConnection(url, name, password);
            
        }catch(Exception e){ 
        	e.printStackTrace();
        }
        
        return con;
    }
    
    public void proc()
    {
        Connection conn = getConnection();
        CallableStatement stmt = null;
        
        try
        {
            stmt = conn.prepareCall("{call hello(?)}");    
            stmt.registerOutParameter(1, Types.INTEGER);
            stmt.execute();
            
            int i = stmt.getInt(1);
            
            System.out.println(i);
            
        }catch(Exception e){
            e.printStackTrace();
            
        }finally
        {
            try 
            {
                stmt.close();
                conn.close();
                
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    public void proc2()
    {
        Connection conn = getConnection();
        CallableStatement stmt = null;
        
        try
        {
            stmt = conn.prepareCall("{call hello2(?, ?)}");    
            stmt.registerOutParameter(1, Types.INTEGER);
            stmt.registerOutParameter(2, Types.VARCHAR);
            stmt.execute();
            
            int i = stmt.getInt(1);
            String str = stmt.getString(2);
            
            System.out.println(i + " " + str);
            
        }catch(Exception e){
            e.printStackTrace();
            
        }finally
        {
            try 
            {
                stmt.close();
                conn.close();
                
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}	

 

8. 输出结果为:

 

Java代码 复制代码
  1. 4  
  2. 4 beijing  
分享到:
评论

相关推荐

    Java实现调用MySQL存储过程详解

    总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。

    Java调用Mysql存储过程

    总之,Java调用MySQL存储过程是一个涉及JDBC、CallableStatement和数据库交互的过程。理解这些步骤并正确地应用它们,可以有效地利用存储过程提高应用程序的性能和效率。记得在实际开发中,根据实际情况调整代码,...

    Java调用数据库存储过程[mysql测试通过]

    以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    如何在java中调用mysql的存储过程的事例

    这就是在Java中调用MySQL存储过程的基本步骤。在实际开发中,你可能需要根据具体的需求进行调整,如处理多结果集、异常处理等。理解这个过程可以帮助你更有效地利用存储过程提升数据库操作的效率和安全性。

    java调用存储过程(含out参数)

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    mysql调用存储过程

    这就是通过JDBC在Java中调用MySQL存储过程的基本步骤。实际应用中,你可能需要处理更复杂的存储过程,包括输入参数、输出参数和多结果集。在定义`CallableStatement`时,可以使用`?`作为占位符来指定参数,然后通过`...

    java 调用存储过程

    值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...

    MyBatis调用MYSQL存储过程

    MyBatis调用MYSQL存储过程 返回多行 引用的包: asm-3.1.jar cglib-2.2.jar commons-logging-1.1.1.jar log4j-1.2.13.jar mybatis-3.0.4.jar mysql-connector-java-5.1.13.jar slf4j-api-1.5.8.jar slf4j-log4j12-...

    JAVA通过MyBatis调用MySql存储过程和函数doc文档合集整理.zip

    这个文档合集应该详细讲解了这些步骤和最佳实践,帮助开发者熟练掌握在Java中利用MyBatis调用MySQL存储过程和函数的技巧,从而更高效地进行数据库操作。通过深入学习和实践,开发者可以更好地理解这两者之间的交互,...

    spring mvc + mybatis 调用mysql 存储过程

    本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...

    Java调用MySQL存储过程并获得返回值的方法

    总之,Java调用MySQL存储过程并获取返回值涉及到数据库连接、创建`CallableStatement`对象、设置参数、执行存储过程、处理结果集、关闭资源以及异常处理等多个环节。理解并熟练掌握这些步骤对于进行数据库驱动的Java...

    mybatis调用mysql存储过程

    通过以上步骤,你已经掌握了如何在MyBatis中调用MySQL存储过程的基本方法。在实际开发中,这将极大地提升你的数据库操作效率,使你能够更好地管理和处理复杂的业务逻辑。在后续的实践中,你可以尝试结合具体业务场景...

    java调用存储过程

    Java调用存储过程是数据库操作中的常见任务,特别是在复杂的业务逻辑和数据处理中。MyEclipse作为一款强大的Java集成开发环境,提供了方便的工具来支持这一功能。下面将详细介绍如何在MyEclipse中使用Java调用存储...

    Java程序调用存储过程

    Java程序调用存储过程是数据库操作中的常见任务,特别是在处理大量数据或需要高效执行复杂业务逻辑时。存储过程是预编译的SQL语句集合,它们可以提高性能、减少网络流量,并提供更好的安全性。在Java应用程序中调用...

    struts+spring_ibaits+调用Mysql存储过程实现增删改查

    在本项目中,"struts+spring_ibaits+调用Mysql存储过程实现增删改查",意味着开发者利用这三个框架来处理数据库中的增、删、改、查(CRUD)操作,并通过调用MySQL的存储过程来实现这些功能。存储过程是预编译的SQL...

    java操作mysql存储过程的例子.doc

    总结,Java操作MySQL存储过程的关键在于使用`CallableStatement`,它允许我们调用数据库中的存储过程并传递参数。在执行前,需要确保正确建立了数据库连接,并且已经创建了所需的存储过程。在处理完存储过程后,别忘...

    MySQL存储过程编程教程.pdf

    MySQL存储过程编程是数据库应用开发中的一个重要环节,它可以帮助开发者将一系列的数据库操作封装起来,以提高程序的可维护性和运行效率。在MySQL 5.0及以上版本中,存储过程、函数和触发器的支持为数据库提供了更...

    存储过程调用java程序

    1. **Java调用存储过程**:在Java应用中,我们可以通过JDBC(Java Database Connectivity)API来调用数据库中的存储过程。例如,使用CallableStatement对象,设置输入/输出参数,并执行存储过程。这种方式使得Java...

Global site tag (gtag.js) - Google Analytics