Java org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement
我正在尝试使用prepared语句查询数据库,但出现错误: org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement 导入Java org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement,java,spring-mvc,prepared-statement,jdbctemplate,Java,Spring Mvc,Prepared Statement,Jdbctemplate,我正在尝试使用prepared语句查询数据库,但出现错误: org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement 导入 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
JDBC
public List<Crime> getCrimeList(Crime crime) {
String where_clause = "";
final List<Object> args = new ArrayList<Object>();
final StringBuilder whereClause = new StringBuilder();
if (crime.getCrimeDate()!= null){
whereClause.append(" and crime.crimeDate = ?");
args.add(crime.getCrimeDate());
}
if(crime.getCrimeDetails() != null){
whereClause.append(" and crime.crimeDetails = ?");
args.add(crime.getCrimeDetails());
}
..............
logger.debug("In getCrimeList()");
final String sql = "select crime.*, "+
"criminalSocialSecurityNumber,criminal.fName as criminalFName,criminal.lName as criminalLName,"+
"criminal.photo as criminalPhoto,criminal.dob as criminalDob,victimSocialSecurityNumber,"+
"victim.fName as victimFName,victim.lName as victimLName,victim.photo as victimPhoto, victim.dob as victimDob "+
"from tblcrimes crime "+
"left join tblcriminalcrime on crime.crimeRecNo = tblcriminalcrime.crimeRecNo "+
"left join tblvictimcrime on crime.crimeRecNo = tblvictimcrime.crimeRecNo "+
"inner join tblcitizens criminal on criminal.socialSecurityNumber = tblcriminalcrime.criminalSocialSecurityNumber "+
"inner join tblcitizens victim on victim.socialSecurityNumber = tblvictimcrime.victimSocialSecurityNumber ";
logger.debug("Executing getCrimeList String "+sql);
List<Crime> crimeList = getJdbcTemplate().query(new PreparedStatementCreator(){
public java.sql.PreparedStatement createPreparedStatement(
java.sql.Connection connection) throws SQLException {
PreparedStatement ps =(PreparedStatement) connection.prepareStatement(sql + whereClause);
int i = 1;
for (Object arg : args) {
ps.setObject(i, arg);
i++;
}
return ps;
}
}, new CrimeMapper());
return crimeList;
}
在线:
PreparedStatement ps =(PreparedStatement) connection.prepareStatement(sql + whereClause);
您确定PreparedStatement
是java.sql.PreparedStatement
不确定为什么需要强制转换从
连接返回的对象。prepareStatement()
。此方法返回类型为java.sql.PreparedStatement
的对象。如果正确导入类,请检查导入语句。我在问题中包含了导入确定我的错误,我将其更改为java.sql.PreparedStatement ps=connection.preparest陈述(sql+where子句);它是有效的。非常感谢你的帮助
PreparedStatement ps =(PreparedStatement) connection.prepareStatement(sql + whereClause);