Java如何执行存储过程?
存储过程是用户生成的函数或过程,它们一旦在数据库中创建,便可以由诸如Java应用程序之类的客户端应用程序调用。在此示例中,我们将演示如何使用JDBCjava.sql.CallableStatement调用存储过程。此示例中的存储过程仅用于从products表中选择记录。
package org.nhooo.example.jdbc; import java.sql.*; public class CallableStatementDemo { private static final String URL = "jdbc:mysql://localhost/nhooo"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; public static void main(String[] args) { try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { //创建一个CallableStatement以执行GetAllProducts() //程序。 CallableStatement stmt = connection.prepareCall("{CALL GetAllProducts()}"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { System.out.println(rs.getLong("id") + "\t" + rs.getString("code") + "\t" + rs.getString("name") + "\t" + rs.getDouble("price")); } } catch (SQLException e) { e.printStackTrace(); } } }
下面是在上面的代码中执行的存储过程定义。
DELIMITER ;; CREATE PROCEDURE `GetAllProducts`() BEGIN SELECT * FROM products; END;; DELIMITER ;
运行代码片段时,结果将是这样的:
1 P0000001 UML Distilled 3rd Edition 25.0 3 P0000003 PHP Programming 20.0 4 P0000004 Longman Active Study Dictionary 40.0 5 P0000005 Ruby on Rails 24.0 6 P0000006 Championship Manager 0.0 7 P0000007 Transport Tycoon Deluxe 0.0 8 P0000008 Roller Coaster Tycoon 3 0.0 9 P0000009 Pro Evolution Soccer 0.0 10 P0000010 Data Structures, Algorithms 50.99
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>