2015-08-26 11 views
5

Sto cercando di eseguire una query SQL e cercare di ottenere il suo valore in una variabile intera, ma sto ricevendo un errore di tempo di compilazione dicendoIl metodo queryForInt (String) non è definito per il tipo di JdbcTemplate

il metodo queryForInt (String) non è definito per il tipo JdbcTemplate

il mio codice è corretto credo, quindi non ho problemi nel mio file pom.

mio file pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>sql</groupId> 
    <artifactId>sql</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>sql</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <spring.version>4.1.0.RELEASE</spring.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 



    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 




    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>4.2.0.RELEASE</version> 
</dependency> 



    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.9</version> 
    </dependency> 


    </dependencies> 
</project> 

mio file app.java:

package sql.sql; 


import java.sql.ResultSet; 
import java.sql.SQLException; 
//import org.springframework.jdbc.core; 
import java.util.List; 

import javax.sql.DataSource; 

//import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.jdbc.core.JdbcTemplate; 


public class App 
{ 
    public static void main(String[] args) 
    { 
     //DataSource dataSource = null ; 
     ApplicationContext context = 
       new ClassPathXmlApplicationContext("web.xml"); 
     DataSource obj = (DataSource) context.getBean("dataSource"); 
     JdbcTemplate jdbcTemplateObject = new JdbcTemplate(obj); 


     String SQL1 = "select count(*) from issues"; 
     int row1 = jdbcTemplateObject.queryForInt(SQL1); 
     System.out.println(row1); 

     System.out.println("Hello World!"); 
    } 
} 

risposta

7

Il metodo JdbcTemplate.queryForInt era deprecated in primavera 3.2.2 ed è stato removed in primavera 4.2.0.

v'è in realtà un conflitto di dipendenza nella vostra pom.xml: si dipende dalla versione primavera 4.1.0.RELEASE e 4.2.0.RELEASE (per spring-jdbc). Maven risolve questo conflitto usando la versione 4.2.0.RELEASE per tutte le dipendenze Spring, ecco perché il metodo queryForInt non è disponibile.

È possibile:

Vi consiglio di effettuare l'aggiornamento in quanto non è una buona pratica continuare ad usare API deprecate.

Vedere this question per ulteriori informazioni.

+0

ho utilizzato int count = jdbcTemplateObject.queryForObject (SQL1, Integer.class); – Labeo

1

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html

non c'è tale metodo nella primavera JdbcTemplate.

Quindi, il tuo pom è buono, devi solo verificare se hai personalizzato JdbcTemplate per avere dei metodi sovrascritti o stai usando un metodo sbagliato.

si consiglia di utilizzare l'ultimo metodo

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#queryForObject-java.lang.String-java.lang.Class-

queryForObject(sql, Integer.class, arg1, arg2, ...); 
Problemi correlati