Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement_Java_Spring Mvc_Prepared Statement_Jdbctemplate - Fatal编程技术网

Java 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.

我正在尝试使用prepared语句查询数据库,但出现错误: org.apache.commons.dbcp.DelegatingPreparedStatement不能强制转换为com.mysql.jdbc.PreparedStatement

导入

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);