Conexão com o MySQL

7 respostas
E

Bom pessoal estou desenvolvendo um programa e esse programa vai se conectar com o servidor só que a conexão com o Banco de Dados não está funcionando a conexão sempre vem nula eu não sei o que eu estou fazendo de errado, sou principiante também em programação para o Android.

Segue abaixo a minha classe que insere e conecta ao Banco de Dados, já segui alguns passos incluir o JAR do MySQL, e mudar o Android manifest file mais não tenho certeza se está no lugar certo.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.waltaxi.daoconexao;

import android.app.Activity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author Ederson
 */
public class ConexaoWalkTaxi extends Activity{
    
    private String url = "jdbc:mysql://localhost:3306/";
    private String banco_dados = "walktaxi";
    private String usuario = "root";
    private String senha = "";
    private Connection connection;
    
    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getBanco_dados() {
        return banco_dados;
    }

    public void setBanco_dados(String banco_dados) {
        this.banco_dados = banco_dados;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Connection getConnection() {
        return connection;
    }

    public void setConnection(Connection connection) {
        this.connection = connection;
    }
    
    public void criaConexao() {
        try {
            if(getConnection() == null) {
                setConnection(DriverManager.getConnection(getUrl() + getBanco_dados(), getUsuario(), getSenha()));
            } else {
                //JOptionPane.showMessageDialog(null, "Já existe uma conexão", "Conexão - Banco De Dados", 1);
            }
        } catch (SQLException e) {
            //JOptionPane.showMessageDialog(null, "Não foi possivel conectar ao Banco de Dados.\n\nErro: " + e, "Conexão - Banco De Dados", 1);
        }
    }
    
    public void fechaConexao() {
        
        try {
            this.connection.close();
        } catch (SQLException e) {
            //JOptionPane.showMessageDialog(null, "Conexão fechada", "Conexão - Banco De Dados", 1);
        }
        
    }
    
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.walktaxi.modelo.dao;

import br.com.walktaxi.modelo.Usuario;
import br.com.waltaxi.daoconexao.ConexaoWalkTaxi;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 *
 * @author Ederson
 */
public class UsuarioDAO {
    
    
    public void incluir (Usuario usuario) {
        
        ConexaoWalkTaxi conexao = new ConexaoWalkTaxi();
        conexao.criaConexao();

        String comandoIncluir = "INSERT INTO USUARIO (CDUSUARIO, NOME, SOBRENOME, EMAIL, SENHA, TELEFONE) VALUES ("
                + usuario.getCdUsuario() + ", "
                + "'" + usuario.getNome() + "', "
                + "'" + usuario.getSobrenome() + "', "
                + "'" + usuario.getEmail() + "', "
                + "'" + usuario.getSobrenome() + "', "
                + "'" + usuario.getSobrenome() + "')";
        
        System.out.println(comandoIncluir);

        try {

            PreparedStatement preparedStatement = (PreparedStatement) conexao.getConnection().prepareStatement(comandoIncluir);
            preparedStatement.execute();
            preparedStatement.close();

        } catch (SQLException e) {
            throw new Error(e);
        } finally {
            conexao.fechaConexao();
        }
        
    }
    
    public void alterar (Usuario usuario) {
        
        ConexaoWalkTaxi conexao = new ConexaoWalkTaxi();
        conexao.criaConexao();

        String comandoAlterar = "UPDATE USUARIO SET " +
                                "NOME = '" + usuario.getNome() + "', " +
                                "SOBRENOME = '" + usuario.getNome() + "', " +
                                "EMAIL = '" + usuario.getNome() + "', " +
                                "SENHA = '" + usuario.getNome() + "', " +
                                "TELEFONE = '" + usuario.getNome() + "' " +
                                "WHERE CDUSUARIO = " + usuario.getCdUsuario();
        
        System.out.println(comandoAlterar);

        PreparedStatement preparedStatement = null;

        try {

            preparedStatement = (PreparedStatement) conexao.getConnection().prepareStatement(comandoAlterar);
            preparedStatement.execute();
            preparedStatement.close();

        } catch (SQLException e) {
            throw new Error(e);
        } finally {
            conexao.fechaConexao();
        }
        
    }
    
    public void exluir (Usuario usuario) {
        
        ConexaoWalkTaxi conexao = new ConexaoWalkTaxi();
        conexao.criaConexao();

        String comandoExcluir = "DELETE USUARIO WHERE CDUSUARIO = " + usuario.getCdUsuario();
        
        System.out.println(comandoExcluir);

        PreparedStatement preparedStatement = null;

        try {

            preparedStatement = (PreparedStatement) conexao.getConnection().prepareStatement(comandoExcluir);
            preparedStatement.execute();
            preparedStatement.close();

        } catch (SQLException e) {
            throw new Error(e);
        } finally {
            conexao.fechaConexao();
        }
        
    }

}

Código do Android manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="br.com.walktaxi"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MainActivityWalkTaxi"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <uses-permission android:name="android.permission.INTERNET"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

7 Respostas

V

Na minha opinião isso se chama gambiarra.

E

Então me ajude com a maneira correta como eu disse estou aprendendo.

T

Cara esse seu metodo public void criaConexao() da classe ConexaoWalkTaxi tem que ter um return do tipo Connection… Você criou ele como void…

Depois na classe UsuarioDAO você cria:

Dentro do construtor da classe UsuarioDAO você instancia ele:

connection = new new ConexaoWalkTaxi().criaConexao();

Depois mude:

String comandoIncluir = "INSERT INTO USUARIO (CDUSUARIO, NOME, SOBRENOME, EMAIL, SENHA, TELEFONE) VALUES (?,?,?,?,?,?)";

 try {  
  
            PreparedStatement preparedStatement = conexao.prepareStatement(comandoIncluir);  
           preparedStatement.setInt(1,usuario.getCdUsuario());
           preparedStatement.setString(2,usuario.getNome());
           (... faz o resto)

A ideia é essa… Você tem que ver aí a questao do seu codigo (id) se está autoincrement creio que você não precise refereciar ele na query!

E

Entendi ficou bem melhor mesmo assim, só que a conexão ainda não funciona, continua vindo nula, o arquivo do Android manifest está correto?

V

Use webservice.

E

Realmente se for incremental não precisa referenciar mais por enquanto está incremental mais pretendo tirar isso e fazer um calculo para gerar números aleatórios, auto incremental não é nada legal e pretendo retirar mesmo. Só que ainda a conexão não funciona. O JAR está lá, o Android manifest não sei se está certo a permissão aonde coloquei.

saryoromulo

Vê se aproveita alguma coisa daí.

http://www.guj.com.br/java/301842-resolvido-conexao-android-com-mysql-sem-web-services

Edit…

Só um comentário… não coloca localhost não, mesmo que tiver rodando no emulador, pq ele normalmente não acha… coloca o ip mesmo da maquina que tá o banco…

Criado 23 de julho de 2013
Ultima resposta 30 de jul. de 2013
Respostas 7
Participantes 4