最近,在忙着换一份工作,面试的时候,被一个话题卡住了,也许是我之前做的项目没有使用过存储过程吧,所以,就相对来说陌生了,被一个考官问得很失底气,遂我决定研究一番,原来是这么的简单,下文记录一下这个历程,以后看一下就一目了然了
引用
附件说明
附件中包含了JDBC使用到的mysql驱动包和小生研究的简单调用代码
引用
首先是,创建数据库--sqlStudy
CREATE DATABASE sqlStudy;
接着创建表--user
CREATE TABLE user
(
id int(10) NOT NULL PRIMARY KEY ATUO_INCREMENT,
name char(50) NOT NULL
)
插入几条数据
USE sqlStudy;
INSERT INTO user VALUES(id,'first');
INSERT INTO user VALUES(id,'second');
INSERT INTO user VALUES(id,'third');
INSERT INTO user VALUES(id,'fourth');
INSERT INTO user VALUES(id,'fifth');
INSERT INTO user VALUES(id,'sixth');
检验下插入的数据吧:
SELECT * FROM user;
然后,创建存储过程--findById
MySQL存储过程语法详见:
http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html
DELIMITER //;--这个是设置mysql的分隔符,默认mysql是;
DROP PROCEDURE IF EXISTS findById//
CREATE PROCEDURE findById(IN param int)--IN传入参数进来
BEGIN
SELECT * FROM user WHERE id = param ;
END//
如果报错的话,请检查一下语句是否写错了!此时,可以测试一下我们的存储过程:
SET @param=3//
CALL findById(@param);
你会发现,第三条记录出来了!
引用
下面是JAVA中使用JDBC操作存储过程代码
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.CallableStatement;
import com.mysql.jdbc.Connection;
public class CallProcedure {
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private static final String URL = "jdbc:mysql://localhost:3306/sqlstudy";
public static void call(){
loadMySqlDriver();
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try{
conn = (Connection) DriverManager
.getConnection(URL , USERNAME , PASSWORD);
//创建调用存储过程的预定义SQL语句
String sql = "{call findById(?)}";
//创建过程执行器
cstmt = (CallableStatement) conn.prepareCall(sql);
//设置入参
cstmt.setString(1,"1");
cstmt.executeUpdate();
rs = cstmt.getResultSet();
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
System.err.println("取得的id为:"+id+"\n"+"取得的name为:"+name);
}
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}finally{
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(cstmt != null){ // 关闭声明
try{
cstmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
}
}
/**
* 加载MySql驱动
*/
public static void loadMySqlDriver(){
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
call();
}
}
结果:
取得的id为:1
取得的name为:First
分享到:
相关推荐
总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。
以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...
总之,Java调用MySQL存储过程是一个涉及JDBC、CallableStatement和数据库交互的过程。理解这些步骤并正确地应用它们,可以有效地利用存储过程提高应用程序的性能和效率。记得在实际开发中,根据实际情况调整代码,...
### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...
以下是一个简单的示例代码,演示了如何在Java中调用含`OUT`参数的存储过程: ```java import java.sql.*; public class JavaCallProcedure { public static void main(String[] args) { try { Class.forName(...
值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...
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调用MySQL存储过程并获取返回值涉及到数据库连接、创建`CallableStatement`对象、设置参数、执行存储过程、处理结果集、关闭资源以及异常处理等多个环节。理解并熟练掌握这些步骤对于进行数据库驱动的Java...
这就是在Java中调用MySQL存储过程的基本步骤。在实际开发中,你可能需要根据具体的需求进行调整,如处理多结果集、异常处理等。理解这个过程可以帮助你更有效地利用存储过程提升数据库操作的效率和安全性。
在本项目中,"struts+spring_ibaits+调用Mysql存储过程实现增删改查",意味着开发者利用这三个框架来处理数据库中的增、删、改、查(CRUD)操作,并通过调用MySQL的存储过程来实现这些功能。存储过程是预编译的SQL...
这个文档合集应该详细讲解了这些步骤和最佳实践,帮助开发者熟练掌握在Java中利用MyBatis调用MySQL存储过程和函数的技巧,从而更高效地进行数据库操作。通过深入学习和实践,开发者可以更好地理解这两者之间的交互,...
本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...
MyBatis调用MySQL存储过程的实现通常涉及到以下步骤: 1. 在MyBatis的Mapper XML文件中定义SQL映射,使用`<select>`标签,并设置`id`属性为存储过程名,`resultType`属性为返回结果的数据类型。由于存储过程不返回...
通过以上步骤,你已经掌握了如何在MyBatis中调用MySQL存储过程的基本方法。在实际开发中,这将极大地提升你的数据库操作效率,使你能够更好地管理和处理复杂的业务逻辑。在后续的实践中,你可以尝试结合具体业务场景...
本文将通过两个具体的例子来讲解如何使用Java调用MySQL的存储过程。 **例子一:** 1. 首先,我们创建一个名为`test`的表,它有一个整型字段`field1`,并插入一条数据(值为1)。 ```sql create table test(field1 ...
总之,通过JDBC调用MySQL存储过程使得Java应用程序能够灵活地与数据库交互,执行复杂的业务逻辑,同时保持代码的简洁性和可读性。这在大型系统中尤其重要,因为它允许数据库管理员在不改变应用程序代码的情况下优化...
Java调用存储过程是数据库操作中的常见任务,特别是在复杂的业务逻辑和数据处理中。MyEclipse作为一款强大的Java集成开发环境,提供了方便的工具来支持这一功能。下面将详细介绍如何在MyEclipse中使用Java调用存储...
在Java应用程序中调用这些存储过程有助于实现数据库层的功能封装和复用。 首先,要理解Java如何与数据库交互,这通常通过JDBC(Java Database Connectivity)API来实现。JDBC是Java中用于连接和操作各种类型数据库...
而通过Java调用这些存储过程,可以在应用程序层面保持代码的整洁和模块化,使得维护和扩展变得更加容易。因此,熟练掌握Java调用存储过程的技巧是每个Java开发者的必备技能之一。希望这个小程序和说明能够帮助你更好...