Problema com import java.sql.PreparedStatement
28/02/2010
0
Estou seguindo o curso da devmedia introduçao a jsf, do Dyego Carmo, e em uma das suas aulas tem o seguinte
codigo.
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
Porem, no meu netbeans 6.7, na linha 20 dá o seguinte erro
"incompatible types
required: java.sql.PreparedStatement
found : java.sql.Statement"
então pede pra converter getPreparedStatement(...) para PreparedStatement(...)
o código está igual ao da video-aula, mas no meu código dá esse erro, e na video-aula não, o que poderia ser ?
alguma biblioteca ou jar faltando ?
o banco de dados é jabaDB.
Agradeço se alguem puder me ajudar.
dhigoos@bol.com.br
Rodrigo Vieira
Posts
01/03/2010
Paulo Leite
O que ocorre é que eu tinha esquecido de criar o Statement stmt;
PreparedStatement ps = con.prepareStatement("Insert ... values(?,?,?,?)"); // con. é a referencia para a sessão da ConectionFactory que vai executar a sql e inserir o parametros ?,?,?.
ps.getString(1, unidadeMedida.getMed_nome());
ps.setString(2, ...
.....
/
Verifique se vc está atribuindo o PS a uma sessão da Conectionfactory, que retorna uma instancia de conexao ao seu banco de dados.
Esse getPreparedStatement provávelmente tem que um retorno do Tipo Statement. verifique isso no método getPreparedStatement.
OK abraço.
02/03/2010
Rodrigo Vieira
Agradeço pela resposta, vou tentar o que voce me falou, qualquer coisa te retorno, valeu irmão,
obrigado pela dica.
04/03/2010
Luis Garcia
Não cheguei a ver a video aula que mencionou, mas vou mostrar +/- o fluxo de uma consulta via jdbc:
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("driver_banco").newInstance();
conn = DriverManager.getConnection("jdbc:estancia_banco", "usuario_banco", "senha_banco");
ps = conn.prepareStatement("insert into table values(?,?,?)");
ps.setString(1,"A");
ps.setString(2,"B");
ps.setString(3,"C");
ps.execute();
} catch(SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
if (ps != null) {
ps.close();
conn.close();
} else {
conn.close();
}
}
}
Esse método de getPreparedStatement deve estar encapsulando a conexão do banco.
Qualquer dúvida dê um alô.
Abraço, Garcia.
10/03/2010
Rodrigo Vieira
vou tentar por em pratica as respostas de todos, assim que conseguir avisarei.
mais uma vez obrigado.
10/03/2010
Rodrigo Vieira
obrigado pela sugestão, vou fazer as alteraçoes e ver se dar certo. valeu.
10/03/2010
Rodrigo Vieira
Não cheguei a ver a video aula que mencionou, mas vou mostrar +/- o
fluxo de uma consulta via jdbc:
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("driver_banco").newInstance();
conn = DriverManager.getConnection("jdbc:estancia_banco",
"usuario_banco", "senha_banco");
ps = conn.prepareStatement("insert into table values(?,?,?)");
ps.setString(1,"A");
ps.setString(2,"B");
ps.setString(3,"C");
ps.execute();
} catch(SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
if (ps != null) {
ps.close();
conn.close();
} else {
conn.close();
}
}
}
Esse método de getPreparedStatement deve estar encapsulando a conexão do banco.
Qualquer dúvida dê um alô.
Abraço, Garcia.
valeu amigo, vou tentar sua sugestão, obrigado pela ajuda.
10/03/2010
Rodrigo Vieira
O que ocorre é que eu tinha esquecido de criar o Statement stmt;
PreparedStatement ps = con.prepareStatement("Insert ... values(?,?,?,?)"); // con. é a referencia para a sessão da ConectionFactory que vai executar a sql e inserir o parametros ?,?,?.
ps.getString(1, unidadeMedida.getMed_nome());
ps.setString(2, ...
.....
/
Verifique se vc está atribuindo o PS a uma sessão da Conectionfactory, que retorna uma instancia de conexao ao seu banco de dados.
Esse getPreparedStatement provávelmente tem que um retorno do Tipo Statement. verifique isso no método getPreparedStatement.
OK abraço.
valeu amigo, vou tentar sua sugestão, obrigado pela ajuda.
Clique aqui para fazer login e interagir na Comunidade :)