Importar driver mysql, criar conexão e statement

4 respostas
A

Boa tarde galera,

Estou tentando conectar uma aplicação ao mysql então resolvi fazer uma classe chamada conexão que importa o driver e pega a string de conexão

fiz uns testes e creio que ela consegue pegar o driver, e conectar ao banco mas acho que não estou conseguindo inserir os comandos por algum motivo, poderiam
me ajudar ?

segue o código

public void conexao() {
        try {
            Driver novoDriver = new Driver();
            String driver = novoDriver.toString();
            Class.forName(driver); //Or any other driver
            Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/teste", "root", "password");//o database escolhido é o teste
            Statement query = conexao.createStatement();
            String query1 = "INSERT INTO PESSOA (NOME, IDADE, ENDERECO, OBSERVACOES)"//nome das colunas
                    + "VALUES ('ALEX32' , 21, 'TESTE', 'TESTE');";//valores a serem inseridos
            query.executeQuery(query1);
        } catch (Exception x) {
            JOptionPane.showMessageDialog(null,"Não Foin Possivel realizar a conexão");
        }
    }

uma outra duvida é se devo criar um método só para o Statement e atribuir um retorno ao método conexão

lembrando que já importei com.mysql.jdbc.Driver;

4 Respostas

M

Oie Alex...
Bom eu sempre faço separado... vou postar minha classe conexão talvéz te auxilie e o meu main tb onde testei ok...

package br......controle;

import java.sql.Connection;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.channels.FileChannel;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;

public class Conexao {
	
	private static final String STR_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DATABASE = "sisteduca";
    private static final String IP = "//127.0.0.1:porta/"; 
    private static final String STR_CON = "jdbc:mysql:"+ IP + DATABASE ; 
    private static final String USER = "root";
    private static final String PASSWORD = "*****";
    private static Connection con = null;

    private static Connection getConexao() {
    //	System.out.println("entrou...");
        if (con == null) {
        	//System.out.println("passou no con==null");
            try {
            	//System.out.println("entrou no try");
                Class.forName(STR_DRIVER);
               //System.out.print("ESTA linha é para ser o STR_DRIVER"+STR_DRIVER);
              
                //System.out.print("\n passou pelo database");
                //System.out.print("\n"+DATABASE);
               
                	con = DriverManager.getConnection(STR_CON, USER, PASSWORD);

                	//System.out.print(banco.getAbsolutePath());
                   System.out.println("\n conectou...");
               // }
            } catch (Exception e) {
                e.printStackTrace();
                //System.out.print("primeiro erro do banco.exists");
                System.out.println(Mensagem.ERRO_CONEXAO);
            }
        }
        if (con == null) {
        	 //System.out.print("\n segundo erro ");
            System.out.println(Mensagem.ERRO_CONEXAO);
        }
        return con;
    }}
MAIN
import br.....controle.Conexao;


public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Conexao cx = new Conexao();
		cx.testeConexao();

	}
CLASS MENSAGEM
package br.....controle;

public class Mensagem {

	 public static String ERRO_CONEXAO = "Erro: Não foi possível estabelecer uma conexão com o banco de dados.\n";
	 public static String ERRO_STATEMENT = "Erro desconhecido: PreparedStatement não pode ser criado ou executado. Mensagem: ";

}

Espero que auxilie com a conexão..[]s

Fexx

Use um PreparedStatement ao invés de Statement.

public void adiciona(Pessoa pessoa) throws SQLException{ //Crie um metodo para inserir. passando por paramento seu objeto
		String sql = "insert into contato (nome, idade, endereco, observacoes) values (?, ?, ?, ?)";
		
		PreparedStatement ptmt = conn.prepareStatement(sql); 
		
		ptmt.setString(1, pessoa.getNome());
                ptmt.setInt(2, pessoa.getIdade());
		ptmt.setString(3, pessoa.getEndereco());
		ptmt.setString(4, pessoa.getObservacoes());
		
		
		ptmt.execute();
		ptmt.close();
	}
A

hum, entendi,

bom quando chamo o método conexao() ele não me retorna nenhum erro, então criei uma classe pessoa e atribui uns valores para testar
usando um preparedStatement
ele não apresenta nenhuma mensagem de erro, mas no banco, nada aparece

segue novamente

public static Connection conexao() {
        try {
            Class.forName("com.mysql.jdbc.Driver"); //Or any other driver
            Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost:3306/teste", "root", "password");
            return conexao;
 
        } catch (Exception x) {
            JOptionPane.showMessageDialog(null,"Não Foin Possivel realizar a conexão");
            return null;
        }
    }

e o insert

public void insert(Pessoa pessoa) {
        
        try {
        String sql = "insert into pessoa (nome, idade, endereco, observacoes) values (?, ?, ?, ?)";  
          
        PreparedStatement ptmt = conexao().prepareStatement(sql);   
        
        ptmt.setString(1, pessoa.getNome());  
                ptmt.setInt(2, pessoa.getIdade());  
        ptmt.setString(3, pessoa.getEndereco());  
        ptmt.setString(4, pessoa.getObservacoes());
        } catch (Exception x) {
            JOptionPane.showMessageDialog(null,"Não Foin Possivel realizar a conexão");
        }
    }

ai oque o meu main para testar a conexão e o insert

public static void main (String [] args) {
        
        Exemplo novoExemplo = new Exemplo();
        
        Pessoa novaPessoa = new Pessoa();
        novaPessoa.setNome("Alex");
        novaPessoa.setIdade(21);
        novaPessoa.setEndereco("testestestes");
        novaPessoa.setObservacoes("observacoes observacoes");
        
        novoExemplo.insert(novaPessoa);
        
    }
Fexx

Vc esqueceu de executar o query com ptmt.execute();

public void insert(Pessoa pessoa) {
		try {
			String sql = "insert into pessoa (nome, idade, endereco, observacoes) values (?, ?, ?, ?)";

			PreparedStatement ptmt = conexao().prepareStatement(sql);

			ptmt.setString(1, pessoa.getNome());
			ptmt.setInt(2, pessoa.getIdade());
			ptmt.setString(3, pessoa.getEndereco());
			ptmt.setString(4, pessoa.getObservacoes());
			
			ptmt.execute(); // executando a query
		} catch (Exception x) {
			JOptionPane.showMessageDialog(null,
					"Não Foin Possivel realizar a conexão"+x.getMessage());
		}
	}
Criado 30 de dezembro de 2011
Ultima resposta 30 de dez. de 2011
Respostas 4
Participantes 3