Montando Classe para trabalhar com MySQL

5 respostas
R

Olá pessoal!

Sou programador PHP/MySQL a mutios anos, e agora estou iniciando no java. Como devem saber, quem programa em PHP fica bem longe de classes (dificilmente se usa), logo, estoiu tendo uma dificuldade imensa em me acostumar com a lógica do JAVA.

Para começar, lí uma apostila da Caelum, e agora estou com muito sacrifício montar uma classe para trabalhar com o MySQL.

É a seguinte:

package Classes;

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

public class ConMySQL {
	
	Connection conexao;
	Statement stmt;
	String driver = "com.mysql.jdbc.Driver";
	String banco = "jdbc:mysql://localhost:3306/teste";
	String usuario = "root";
	String senha = "123";
	
	public void Conectar() {
		try {
			Class.forName(driver);
			conexao = DriverManager.getConnection(banco, usuario, senha);
			System.out.println("Conectou..");  
		} catch (Exception e) {
			e.printStackTrace();
		}
	} 
 
 	public void Comando(String q) {
		stmt = conexao.createStatement(); 
		stmt.execute("INSERT INTO teste (campo) VALUES (65146453)"); //só pra testar  
	}

	public void Desconecta() {
		if (conexao != null) {
			try {
				conexao.close();
				System.out.println("Desconectou..");  

			} catch (SQLException e) {
				e.printStackTrace();
			}
		} 
	}

}

Pois bem, se eu coloco o conteúdo da Comando() dentro do try da Conecta(), funciona, mas se eu deixo como está, ocorre um erro:

C:\...\ConMySQL.java:33: unreported exception java.sql.SQLException; must be caught or declared to be thrown
                stmt = conexao.createStatement(); 
                                              ^
C:\...\ConMySQL.java:34: unreported exception java.sql.SQLException; must be caught or declared to be thrown
                    stmt.execute("INSERT INTO teste (campo) VALUES (65146453)");  
                                ^

Estou usando o JCreator e Bloco de Notas, e não quero começar a usar qualquer outra ferramenta por enquanto, pois com certeza aprendo mais se no começo for na raça.

Gostaria de saber, se por favor, alguém poderia me exeplicar o que está acontecendo, e como resolver isso. Ou mesmo se minha lógica não é a correta.

Muito obrigado desde já!

Rodrigo

5 Respostas

paulovittor23

Você pode resolver esse erro das duas seguintes maneiras…

public void Comando(String q) { try{ stmt = conexao.createStatement(); stmt.execute("INSERT INTO teste (campo) VALUES (65146453)"); //só pra testar }catch( SQLException ex ){ //trata a excessão } }

ou

public void Comando(String q) throws SQLException { stmt = conexao.createStatement(); stmt.execute("INSERT INTO teste (campo) VALUES (65146453)"); //só pra testar }

Mas era bom você estudar sobre Exceções, da uma olhada nesse link.

R

Minha nossa paulovittor23, estou me sentindo um completo idiota hehehe…

Passei a madrugada inteira tentando fazer isso, dormir eram seis da manhã e acordei agora e ja voltei a tentar de novo, e mesmo assim não tinha conseguido!

Testei amabas soluções, funcionaram perfeitamente!

Seria pedir demais você me explicar, por cima mesmo, o que elas estão fazendo exatamnente?

A seguranda opção, eu ví que contem o throws, eu lí sobre isso na apostila, mas para ser sincero não entendi muito bem hehee!

Bom, muito obrigado mesmo!

Rodrigo

paulovittor23

Fala rodrigo, é normal penar por coisas simples no começo, mas é assim que se aprende né?
Você ainda deu sorte, saiu do php para o Java, eu não tive tanta sorte, vim do asp :?

Bom a diferença básica entre colocar um try/catch dentro do método e o throws na assinatura do método é o momento onde a exceção terá de ser tratada.
Por exemplo, quando utilizamos try/catch estamos tratando a exceção no momento em que ela ocorre, já quando usamos o throw estamos repassando essa responsabilidade de tratar a exceção para quem chamou esse método, ou seja, na chamada desse método terá que ser colocado o try/catch.
Existem também excessões verificadas e não verificadas, enfim, é algo que merece um pouco de estudo, vai deixar suas aplicações mais confiáveis :wink:

R

Hehehehee ASP é o bicho hehehehe…

Mas beleza, vou estudar melhor isso, agora estou bolando aqui como vou tratar a resposta de um SELECT por exemplo ahahaha, nossa to gostando muito de JAVA, não vou negar que estou penando para fazer coisas que em PHP faria em segundos, mas acredito que vai valr a pena, faz muito tempo que quero aprender uma linaguegm desktop.

Muito obrigado novamente paulovittor23!

Se um dia precisar de uma força em PHP, fale comigo ahahahaha!

Valeu!

peczenyj

Da uma olhada no primeiro capitulo:

Criado 2 de fevereiro de 2008
Ultima resposta 2 de fev. de 2008
Respostas 5
Participantes 3