java - 如何使用java运行mysql存储过程

标签 java mysql sql stored-procedures

我有一个mysql存储过程。

DELIMITER //  
CREATE PROCEDURE GetRecordsByAge(IN Age INT)  
BEGIN 
  SELECT * FROM test1 WHERE age = Age;  
END //  
DELIMITER ;

当我通过 java 运行此存储过程时,它会提供表的所有记录。

但是如果我在 select 语句中有一个条件。为什么会这样?

这是我的代码行:-

CallableStatement cStmt = null;
cStmt = con.prepareCall("{ CALL GetSpecificRecord(?) }");
cStmt.setInt(1, 25);
cStmt.execute();
ResultSet rs1 = cStmt.getResultSet();

当我打印这个结果集时,这将给出表的所有记录。

问题出在哪里?

谢谢

最佳答案

您获取所有记录的原因是 列名冲突 导致 WHERE 子句始终为真。更改与您正在比较的列名称不同的参数名称,

DELIMITER //  
CREATE PROCEDURE GetRecordsByAge(IN _Age INT)  
BEGIN 
  SELECT * FROM test1 WHERE age = _Age;  
END //  
DELIMITER ;

第二个是,您正在调用不同的存储过程。您调用的不是 GetRecordsByAge,而是 GetSpecificRecord

关于java - 如何使用java运行mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018908/

相关文章:

mysql - SQL查询以获取具有某些条件的最后一组不同记录

MySQL 选择具有相同条件值的前几行

java - 未为参数类型定义运算符+字符串,无效

java - 触发在 Windows 上运行的 1.5 JVM 的堆转储

java - 在后台持续检查互联网 - Android

java - 在 jdb 中指定 sourcepath,我做错了什么?

MySql 函数与 kohana ORM

mysql 比较时间戳与彼此的分钟数

mysql - 单行/单列查询(MySQL)

mysql - 索引应该有什么顺序?