Conexão com o MySQL

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>

Na minha opinião isso se chama gambiarra.

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

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!

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?

Use webservice.

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.

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…