Fala rapez…
Estou tentando inserir um statemente aqui,
public void alterarCliente(ClienteBean cliente){
try{
pstm = bd.conectar().prepareStatement(alteraCliente);
pstm.setString(1,cliente.getNome());
}catch(Exception e){
e.printStackTrace();
}
O erro acontece aqui:
pstm = bd.conectar().prepareStatement(alteraCliente);
até o bd.conectar(), funciona normalmente, quando eu digito um botão depois do parenteses, era para aparecer o auto completar do "prepareStatement();
Só que não aparece, e ta dando erro, nao sei se ficou alguma coisa sem importar,
alguma solução?
Infelizmente não dá para saber nada dai…
O quê bd.conectar() retorna?
Coloque o código da Classe acessoMySql para gente você o que acontece.
Coloque também, o stacktrace da exceção.
Um abraço.
Simplesmente ele nao retorna nada,
eu coloco assim,
pstm = bd.conectar()
A proxima parte seria digital um ponto depois do ultilmo parenteses e completar com prepareStatement(alterarCliente);
só que não aparece aquele auto completar.
Se eu tento digitar na mao, dá erro.
Era pra ficar assim " pstm = bd.conectar().prepareStatement(alterarCliente); "
Nesta linha (" pstm = bd.conectar().prepareStatement(alterarCliente); " ), aparece uma exclamação do erro contendo o seguinte:
! void cannot be deferenced
Código da classe acessoMySql
package acessobd;
import java.sql.;
import java.lang.;
public class acessoMySql {
PreparedStatement pstm;
ResultSet rs;
Connection con;
public acessoMySql(){
}
public void conectar(){
String url="jdbc:mysql://localhost:3306/mysql";
String user="root";
String pass="admin";
String driver="com.mysql.jdbc.Driver";
try{
Class.forName(driver);
con = DriverManager.getConnection (url,user,pass);
System.out.println("Conectado");
}catch(ClassNotFoundException ex){
System.out.println("Classe não encontrada"+ex);
}catch(Exception ex){
System.out.println("Erro na conexao"+ex);
}
}
}
Valeu RAFAEL !
Não é querendo te desanimar, mas por que você ta mexendo com banco de dados sem saber coisas mais básicas ainda da linguagem e de orientação a objetos?
Coisas básicas como a convenção de que nome de Classe começa com letra maiúscula (AcessoMySql e não acessoMySql) ou que seu método não funciona porque tem retorno “void” (ou seja, retorne seu “con” que vai funcionar).
Por isso estou no forum do java básico, se eu soubesse o que fazer nao estaria no básico, nem no avançado, nao teria dúvidas.
obs: Isto é conteúdo de uma vídeo-aula.
Não to falando do forum, mas do assunto que você esta estudando… não deveria estar tentando fazer coisas com banco de dados… mas enfim…
como falei, é so retornar o “con” da linha:
con = DriverManager.getConnection (url,user,pass);
Você está enganado, não tenho problemas na classe acessoMySql, ela esta funcionando, só coloquei o código pro Rafael ver.
A classe em si não tem problema cara, mas você não consegue fazer conectar().prepareStatement() porque “conectar()” retorna VOID.
Dessa forma, ao retornar o “con” (Connection) no metodo conectar() você conseguirá chamar o prepareStatement(), pois este é um método da classe Connection.
[quote=Rendrys]Não é querendo te desanimar, mas por que você ta mexendo com banco de dados sem saber coisas mais básicas ainda da linguagem e de orientação a objetos?
Coisas básicas como a convenção de que nome de Classe começa com letra maiúscula (AcessoMySql e não acessoMySql) ou que seu método não funciona porque tem retorno “void” (ou seja, retorne seu “con” que vai funcionar).
[/quote]
Verdade… muita verdade nisso!
Mas…
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class acessoMySql {
PreparedStatement pstm;
ResultSet rs;
Connection con;
public acessoMySql() {
String url = "jdbc:mysql://localhost:3306/mysql";
String user = "root";
String pass = "admin";
String driver = "com.mysql.jdbc.Driver";
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, pass);
System.out.println("Conectado");
} catch (ClassNotFoundException ex) {
System.out.println("Classe não encontrada" + ex);
} catch (Exception ex) {
System.out.println("Erro na conexao" + ex);
}
}
public Connection conectar() throws Exception {
if(null != con){
return con;
}
throw new Exception("Não conectou!");
}
}[/code]
Tai ai!
Errr eu não queria colocar código pronto, mas já que o Rafael colocou…
Percebeu que ele trocou o retorno de conectar() de public void conectar()
pra public Connection conectar()
?..
Dessa nova forma é possivel fazer conectar().prepareStatement()…
Sim Sim, eu entendi agora, desculpa pela ignorancia… estou seguindo uma video-aula, da uma olhada…
Obrigado, agora resolveu…