来自:深沉的船
首先在mysql中练习下存储过程的小例子:
mysql> delimiter //
mysql> create procedure hello()
-> begin
-> select 'It is not a HelloWorld';
-> end
-> //
Query OK, 0 rows affected (0.01 sec)
其中“delimiter //”的意思是定义结束符号为“//”,以此来替换mysql中的“;”
在mysql中查询上面的过程hello():
mysql> call hello()//
+------------------------+
| It is not a HelloWorld |
+------------------------+
| It is not a HelloWorld |
+------------------------+
1 row in set (0.00 sec)
建立一个简单的测试用表:
mysql> DROP TABLE IF EXISTS `userinfo`.`mapping`;
-> CREATE TABLE `userinfo`.`mapping` (
-> `cFieldID` smallint(5) unsigned NOT NULL,
-> `cFieldName` varchar(30) NOT NULL,
-> PRIMARY KEY (`cFieldID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-> //
Query OK, 0 rows affected (0.14 sec)
向table mapping中插入一些初始化的数据:
mysql> load data infile 'd:\\userInfo\\field.txt' into table mapping
-> fields terminated by ',' lines terminated by '\r\n' //
Query OK, 5 rows affected (0.02 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select *from mapping//
+----------+-------------+
| cFieldID | cFieldName |
+----------+-------------+
| 1 | MarketValue |
| 2 | P/L |
| 3 | EName |
| 4 | Nominal |
| 5 | Chg |
+----------+-------------+
5 rows in set (0.02 sec)
现在简历一个向mapping中插入一条记录并返回记录的总和
mysql> drop procedure if exists mappingProc;
-> create procedure mappingProc(out cnt int)
-> begin
-> declare maxid int;
-> select max(cFieldID)+1 into maxid from mapping;
-> insert into mapping(cFieldID,cFieldName) values(maxid,'hello');
-> select count(cFieldID) into cnt from mapping;
-> end
-> //
查找mappingProc():
mysql> call mappingProc(@a)//
mysql> select @a//
+------+
| @a |
+------+
| 6 |
+------+
mysql> select * from mapping//
+----------+-------------+
| cFieldID | cFieldName |
+----------+-------------+
| 1 | MarketValue |
| 2 | P/L |
| 3 | EName |
| 4 | Nominal |
| 5 | Chg |
| 6 | hello |
+----------+-------------+
下面是java代码用来调用MySQL的存储过程:
package kissJava.sql;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class SQLUtils {
String url = "jdbc:mysql://127.0.0.1:3306/userInfo";
String userName = "root";
String password = "zhui007";
public Connection getConnection() {
Connection con=null;
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
con = DriverManager.getConnection(url, this.userName, this.password);
}catch(SQLException sw){
}
return con;
}
public void testProc(){
Connection conn = getConnection();
CallableStatement stmt = null;
try{
stmt = conn.prepareCall("{call mappingProc(?)}");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.execute();
int i= stmt.getInt(1);
System.out.println("count = " + i);
}catch(Exception e){
System.out.println("hahad = "+e.toString());
}finally{
try {
stmt.close();
conn.close();
}catch (Exception ex) {
System.out.println("ex : "+ ex.getMessage());
}
}
}
public static void main(String[] args) {
new SQLUtils().testProc();
}
}
再
到MySQL中查询可看到插入一条新的记录
分享到:
相关推荐
总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。
总之,Java调用MySQL存储过程是一个涉及JDBC、CallableStatement和数据库交互的过程。理解这些步骤并正确地应用它们,可以有效地利用存储过程提高应用程序的性能和效率。记得在实际开发中,根据实际情况调整代码,...
以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...
总之,调用存储过程是Java开发中处理数据库操作的重要环节。理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题...
### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...
值得注意的是,上述代码中的文件名列表(如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-...
总之,通过JDBC调用MySQL存储过程使得Java应用程序能够灵活地与数据库交互,执行复杂的业务逻辑,同时保持代码的简洁性和可读性。这在大型系统中尤其重要,因为它允许数据库管理员在不改变应用程序代码的情况下优化...
总之,Java调用MySQL存储过程并获取返回值涉及到数据库连接、创建`CallableStatement`对象、设置参数、执行存储过程、处理结果集、关闭资源以及异常处理等多个环节。理解并熟练掌握这些步骤对于进行数据库驱动的Java...
这就是在Java中调用MySQL存储过程的基本步骤。在实际开发中,你可能需要根据具体的需求进行调整,如处理多结果集、异常处理等。理解这个过程可以帮助你更有效地利用存储过程提升数据库操作的效率和安全性。
本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...
这个文档合集应该详细讲解了这些步骤和最佳实践,帮助开发者熟练掌握在Java中利用MyBatis调用MySQL存储过程和函数的技巧,从而更高效地进行数据库操作。通过深入学习和实践,开发者可以更好地理解这两者之间的交互,...
通过以上步骤,你已经掌握了如何在MyBatis中调用MySQL存储过程的基本方法。在实际开发中,这将极大地提升你的数据库操作效率,使你能够更好地管理和处理复杂的业务逻辑。在后续的实践中,你可以尝试结合具体业务场景...
Java调用存储过程是数据库操作中的常见任务,特别是在复杂的业务逻辑和数据处理中。MyEclipse作为一款强大的Java集成开发环境,提供了方便的工具来支持这一功能。下面将详细介绍如何在MyEclipse中使用Java调用存储...
1. **Java调用存储过程**:在Java应用中,我们可以通过JDBC(Java Database Connectivity)API来调用数据库中的存储过程。例如,使用CallableStatement对象,设置输入/输出参数,并执行存储过程。这种方式使得Java...
MySQL存储过程编程是数据库应用开发中的一个重要环节,它可以帮助开发者将一系列的数据库操作封装起来,以提高程序的可维护性和运行效率。在MySQL 5.0及以上版本中,存储过程、函数和触发器的支持为数据库提供了更...
总的来说,Java调用存储过程是数据库交互的一个重要环节,理解其原理和操作流程对于开发高效、可靠的数据库应用至关重要。在实际项目中,根据具体需求选择合适的设计策略,既能保证功能实现,又能兼顾性能和维护性。
本文将通过两个具体的例子来讲解如何使用Java调用MySQL的存储过程。 **例子一:** 1. 首先,我们创建一个名为`test`的表,它有一个整型字段`field1`,并插入一条数据(值为1)。 ```sql create table test(field1 ...
### 二、调用存储过程返回单个值的步骤 #### 2.1 准备工作 首先,确保已正确配置数据库连接。这通常涉及到以下几点: - 加载合适的JDBC驱动程序。 - 建立到数据库的连接。 #### 2.2 创建存储过程 假设我们有一个名...