Após um longo tempo sem postar, devido a vários fatores(trabalho, gripe, febre, etc.), resolvi tirar a poeira daqui e fazer um post bem legal.
Lá onde eu trabalho, o primeiro contato que tive com Banco de Dados foi direto com JPQL, Postgres, etc. Mas essa última semana parei e pensei – Caramba, nunca usei MySql – e realmente vi, que nunca tinha nem criado uma conexão com esse bendito Banco. E é por isso que estou aqui, para postar essa minha experiência.
No começo, sabia que precisava do driver, que precisava do banco, e todas as outras coisas. Mas, por onde começar? Foi então que vi um post bem legal no blog do Camilo Lopes, ensinando a criar a primeira conexão com MySql. Então vou colocar aqui o link desse tutorial e começarei a partir de lá.
Colocarei a classe Conexao aqui apenas para facilitar o compreendimento:
public class Conexao {
static String status = "";
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");//pega a classe Driver
String url = "jdbc:mysql://localhost/publico?user=root&password=";//publico é o schema, root o usuario, e no meu caso nao tem senha.
con = DriverManager.getConnection(url);//conecta ao banco.
status = "Conexão Aberta";//muda o status para conexão aberta.
} catch (ClassNotFoundException e) {
status = e.getMessage();
} catch (SQLException e) {
status = e.getMessage();
} catch (Exception e){
status = e.getMessage();
}
return con;//retorna a conexao.
}
Agora que já temos a Classe Conexao, podemos começar a ‘brincar’ com nosso banco.
Criarei uma Classe chamada ComandosSql, que terá três métodos. Um para criar uma tabela, um para inserir um registro, e outro para consultar um registro. Segue então abaixo:
public class ComandosSql {
public void criaTabela(Statement stm) throws SQLException{
stm.execute("CREATE table pessoa(" +//cria a tabela pessoa com os campos
"id_pessoa int auto_increment," +//pk da tabela, com auto increment
"constraint sq_pessoa primary key(id_pessoa),"+//sequence da tabela.
"nome char varying(200)," +//nome da pessoa
"cpf char varying(14)" +//cpf da pessoa
");");
}
public void inserePessoa(Statement stm, String id_pessoa, String nomePessoa, String cpf) throws SQLException{
stm.execute("insert into pessoa(id_pessoa,nome,cpf) values (" + //cod sql para inserir um registro em um tabela
"'"+id_pessoa+"'," +//valor da primary key
"'"+nomePessoa+"'," +//valor do nome da pessoa
"'"+cpf+"')");//valor do cpf
}
public void consultaRegistro(Statement stm, String nomePessoa) throws SQLException{
ResultSet resultSet = stm.executeQuery("select f.nome,f.cpf " + //pega cpf e nome
"from pessoa f " + //da tabela pessoa
"where f.nome='"+nomePessoa+"'");//onde nome = nome passado
if(resultSet.next()){//se tem resultado
System.out.println("Nome: "+resultSet.getString("f.nome")+//imprime nome
"\nCpf: "+resultSet.getString("cpf"));//e cpf.
}
}
}
Com a Classe criada, falta apenas executar os métodos, que é o que faremos na classe Main que segue abaixo:
public class Iniciar {
public static void main(String[] args) {
Connection con = Conexao.getConnection();//pega conexao e conecta.
System.out.println(Conexao.status);//imprime estado da conexao
try {
Statement stm = con.createStatement();//instancia um statment
ComandosSql comandosSql = new ComandosSql();//intancia um comandosSql
comandosSql.criaTabela(stm);//cria tabela
comandosSql.inserePessoa(stm,"1","Flavio Mendes", "000.000.000-00");//insere a pessoa
comandosSql.consultaRegistro(stm,"Flavio Mendes");//pesquisa nome.
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Para um melhor entendimento da sintaxe Sql, clique aqui.
Espero que tenha sido um tutorial bem claro. Obrigado.
Valeu!!
Finalmente uma classe completa e que funciona.
Todo mundo coloca a sequencia sql INSERT blablablablabla (isso nao ajuda nada quem ta iniciando) que se encontra em qualquer tutorial mas não demonstra como criar uma classe que funciona.
Obrigado me ajudou muito
Leo
Parabéns pelo post.
Muito útil e explicativo. Agredecido.
Fillipe.
opa! flavio,
poww fico feliz em saber que meu post ajudou vc, fazendo uma pesquisa aqui no google acabei achando sua citação.
abracos. E obrigado por citar o blog.
Pois é.. o conhecimento foi feito para ser passado para frente né?
Abraço!
Parabéns pelo post… muito claro e direto…
Parabens
Parabéns,
Excelente exemplo.
Muito Legal. Funcionou legal. TEstei vários, mas sempre davam algum problema. Esse funcionou legal. Parabéns.