Erro com PreparedStatement!

5 respostas
W

Ai pessoal to recebendo o seguinte erro ao usar preparedstatement:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from PreparedStatement to PreparedStatement

at Con1.main(Con1.java:44)

esse aqui é a class:
import java.sql.Connection;
import java.sql.SQLException;

import com.mysql.jdbc.PreparedStatement;

public class Contato {
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	private Long id;
	private String nome;
	private String email;
	private String endereco;
}

public class Con1 {

	 public static void main(String[] args)throws SQLException { 
	
		 Connection con = ConnectionFactory.getConnection();
	
		 String sql = "insert into contatos (nome,email,endereco) values (?,?,?)";
		 PreparedStatement stmt = con.prepareStatement(sql);

		 stmt.setString(1, "Caelum");
		 stmt.setString(2, "[email removido]");
		 stmt.setString(3, "R. Vergueiro 3185 cj57");

		 stmt.execute();
		 stmt.close();
		 System.out.println("Gravado!");
		 con.close();
		 }

}

e o código esta igual o da apostila da caelum...

se alguem puder ajudar...

flw !!!

5 Respostas

M

Verifica se sua aplicação tem o Driver do MySQL e revise a sua ConnectionFactory outra coisa esse import na linha 04 da classe contato ta estranho.

import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;

 public class ConnectionFactory {
     private static final String URL="jdbc:mysql://localhost:3306/test";
     private static final String DRIVER="com.mysql.jdbc.Driver";
     private static final String USUARIO="root";
     private static final String SENHA="";

     public static Connection getConnection() throws SQLException{
         try{
             Class.forName(DRIVER);
         System.out.println("Conectado ao banco");
         return DriverManager.getConnection(URL, USUARIO, SENHA);
    }
     catch (ClassNotFoundException e){
        throw new SQLException(e.getMessage());
     }
 }

}
W

esse aqui é meu conectionfactory:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	public static Connection getConnection() throws SQLException {
		try {  
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("Conectado!"); 
			return DriverManager.getConnection("jdbc:mysql://localhost/teste","root","");  
						
			} catch (ClassNotFoundException e) {  
			 throw new SQLException(e.getMessage()); 
		}
	}
	
}
o erro é exatamente nessa linha:
PreparedStatement stmt = con.prepareStatement(sql);

revisei tudo mas continua dando erro...

M

troco isso import com.mysql.jdbc.PreparedStatement;

por isso

import java.sql.PreparedStatement;

?

W

Opa cara valeu pela ajuda, mas o erro era no cast dessa linha:

PreparedStatement stmt = con.prepareStatement(sql);

O certo é:

PreparedStatement stmt = (PreparedStatement) con.prepareStatement(sql);

ou:

java.mysql.PreparedStatement stmt = con.prepareStatement(sql);

abrass!!! flw

M

Whit3Byt3:
Opa cara valeu pela ajuda, mas o erro era no cast dessa linha:

PreparedStatement stmt = con.prepareStatement(sql);

O certo é:

PreparedStatement stmt = (PreparedStatement) con.prepareStatement(sql);

ou:

java.mysql.PreparedStatement stmt = con.prepareStatement(sql);

abrass!!! flw

Se vc troca o import não precisa fazer o cast.

Criado 24 de maio de 2009
Ultima resposta 24 de mai. de 2009
Respostas 5
Participantes 2