我一直在尝试使用 SimpleJdbcDaoSupport 从我的 Spring 项目中访问 MySQL 例程。
我有一个名为的类AdminSimpleMessageManager
,它实现了接口AdminMessageManager
。
AdminSimpleMessageManager
AdminSimpleJdbcMessageDao
有一个实现接口的类的实例AdminMessageDao
。
AdminSimpleJdbcMessageDao
有以下方法:
public class AdminSimpleJdbcMessageDao extends SimpleJdbcDaoSupport implements AdminMessageDao {
public int addMessage(String from, String message) {
return getJdbcTemplate().queryForInt("call insert_contact_message(?, ?)", from, message);
}
}
我在我的应用程序上下文中包含以下内容:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/OctagonDB"/>
</bean>
<bean id="adminMessageManager" class="Managers.AdminSimpleMessageManager">
<property name="adminMessageDao" ref="adminMessageDao"/>
</bean>
<bean id="adminMessageDao" class="Managers.dao.AdminSimpleJdbcMessageDao">
<property name="dataSource" ref="dataSource"/>
</bean>
但我觉得缺少一些重要的行。我得到错误
严重:servlet [dispatcher] 在路径 [/NewWebsite] 的上下文中的 Servlet.service() 引发异常 [请求处理失败;嵌套异常是 org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [调用 insert_contact_message(?, ?)]; 结果集来自 UPDATE。没有数据。; 嵌套异常是 java.sql.SQLException: ResultSet 来自 UPDATE。没有数据。] 根本原因 java.sql.SQLException: ResultSet 来自 UPDATE。没有数据。
我想知道 SQL 例程是否需要返回一些确认信息?或者也许我正在使用错误的信息访问数据库,有没有办法确定它是否连接?
编辑: insert_contact_message 看起来像这样:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_contact_message`(
_author VARCHAR(45),
_message MEDIUMTEXT
)
BEGIN
INSERT INTO contact_messages (`author`, `message`, `date_sent`) VALUES (_author, _message, NOW());
END