Pessoal,
já consegui conectar ao meu BD MySQL e tb fazer um Select, porém ambos em uma mesma Classe/Método.
A duvida é: é possível que uma Classe/Main chame uma outra Classe/Método que só fará a Conexão.
Depois, a mesma Classe/Main chama outra Classe/Método que fará o Select. Ou eu terei que fazer a
conexão para cada commando SQL que eu precise executar, como Select, Insert, Update, etc.
Grato.
Ok. Usei as seguintes linhas de código pra abrir a conexão:
public class ClsSqlCon
{
public static Connection connection;
static String url = “jdbc:mysql://localhost/DBExemplo?useSSL=true”;
static String user = “root”;
static String pass = “***”;
public void Conexao()
{
}
public static Connection Conecta()
{
try
{
Class.forName(“com.mysql.jdbc.Driver”);
connection = DriverManager.getConnection(url,user,pass);
}
}
}
Se, nesta mesma classe, eu colocar q/q commando SQL (um Select, por exemplo), funciona perfeitamente.
Mas, se eu colocar este mesmo Select em uma outra Classe/Método e tentar fazer referencia a "connection"
o compilador dá erro, pois não reconhece o “connection”.
Veja o código do Select abaixo q funciona na mesma Classe/Metodo da Conexão mas não consigo compilar em outra Classe/Método:
String wSelect = "SELECT * FROM TBExemplo";
Statement wStatement = connection.createStatement();
ResultSet wResult = wStatement.executeQuery(wSelect);
while (wResult.next())
{
int wChave = wResult.getInt ("Chave");
String wNome = wResult.getString ("Nome");
}
O Statement wStatement = connection.createStatement(); dá erro, pois não reconhece
o “connection”.
Grato pela ajuda.
Sim … é isso mesmo … mas eu não vi no seu método o retorno do Connection.
Quando vc executa a query no seu método Conecta() ele reconhece o connection porque esta dentro dele …
pra executar fora vc tem que instanciar um outro objeto Connection … olha o exemplo que dei no link :
Eu declarei o objeto de conexão na linha 13. public static Connection conn = null;
Retorno ele na linha 34. return conn;
Dica: coloca um catch no seu try e dentro dele coloca uma mensagem ou tratamento caso de erro na conexão.
Bem … continuando … agora, qualquer método que eu faça, eu instancio um objeto Connection a partir do método de conexão … no seu caso o método Conecta();
Veja que no meu caso, na minha classe ContDao eu declaro outro objeto Connection que recebe o que ? O que retornar da minha classe de conexão:
19. conn = Conn.getConnection();
20. ps = conn.prepareStatement(SQL.toString());
21. rs = ps.executeQuery();
Entendeu ?
Na duvida da uma lida no material
https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/#2-4-fabrica-de-conexoes
Vonquelbe_Cruz, obrigado. De fato eu tinha que retornar a connection e usá-la em outras classes/metodos para SELECT, INSERT e etc. Obrigado pela ajuda. Quanto ao catch, eu já o estava usando. Só tirei do código exemplo para deixá-lo menor pra tua análise.
Aproveitando este ponto, onde, na web, eu consigo ver as condições de erro mais indicadas (boas praticas) pra serem capturadas nas Connections, Selects, Inserts e etc? Grato.