Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 05/12/15, 14:09:25
Avatar de margaca
margaca margaca no está en línea
Usuario poco activo
Mensajes: 6
 
Fecha de registro: feb 2015
Mensajes: 6
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Obtener datos de un formulario

Hola,

Estoy empezando en Android y me han mandado como tarea que haga una aplicación que se conecta directamente a mysql y que lea datos, registre, elimine, actualice...

Ya he conseguido conectar con la base de datos mysql y que muestre datos. Consigo insertar registros pero metiéndole los valores yo a en la consulta. Quisiera saber si me pueden ayudar en como puedo coger los valores que introduzca el usuario en los editText del formulario y guardarlos en mi base de datos.

Dejo aquí el código de como realizo la conexión y la ejecución de consultas:

Clase BD
Código:
public class BD {

    private String ipServidorMySQL, contrasenaMySQL, usuarioMySQL,
            puertoMySQL;
    private  Connection conexionMySQL=null;
    private String driver="com.mysql.jdbc.Driver";


    public void conectarBDMySQL ()

    {
        String urlConexionMySQL = "";
         /*  if (catalogo != "")
                urlConexionMySQL = "jdbc:mysql://" + ip + ":" +
                        puerto + "/" + basedatos;
           else
               // urlConexionMySQL = "jdbc:mysql://" + ip + ":" + puerto;
           if (usuario != "" & contrasena != "" & ip != "" & puerto != "")
           {*/
        try
        {
            Class.forName(driver);
            // conexionMySQL =	DriverManager.getConnection(urlConexionMySQL,usuario, contrasena);
            conexionMySQL = DriverManager.getConnection(
                    "jdbc:mysql://10.0.3.2:3306/usuario_bd", "root", "");

            Log.i("Conectado", "Conectadito");
        }
        catch (ClassNotFoundException e)
        {
          // Log.i(e.getMessage());
        }
        catch (SQLException e)
        {
           // Log.i(e.getMessage());
        }
        //    }

    }

    public  String ejecutarConsultaSQL() throws SQLException {

        // Preparamos la consulta
        Statement sentencia = conexionMySQL.createStatement();
        ResultSet resul = sentencia.executeQuery("SELECT nombre FROM usuario");

        // Recorremos el resultado para visualizar cada fila
        // Se hace un bucle mientras haya registros, se van visualizando
        String cadena = "";
        while (resul.next()) {
            // System.out.println(resul.getInt(1)+" "+resul.getString(2)+" "+
            // resul.getString(3));
            cadena += resul.getString("nombre")+" \n";

           /* Toast.makeText(context,
                    "Error: " + cadena,
                    Toast.LENGTH_SHORT).show();*/

        }

        resul.close();// cerrar ResultSet
        sentencia.close();// Cerrar Statement
        //  conexion.close();// Cerrar conexion
        return cadena;


    }

    public  void ejecutarRegistroSQL()  {

        // Preparamos la consulta
        try {
            Statement sentencia = conexionMySQL.createStatement();
        String sql= "INSERT INTO usuario"
                + "(documento, nombre) " + "VALUES"
                + "('22225', 'NOMBRE')";


            sentencia.executeUpdate(sql);
            System.out.println("registro ok");
        } catch (SQLException e) {
            e.printStackTrace();
            System.err.println("No registrado");
        }

    }

    public  Connection getConexionMySQL() {
        return conexionMySQL;
    }
}
Clase HiloBD

Código:
public class HiloConexionBD extends Thread {

  private BD bd;

    public HiloConexionBD(BD bd){
        this.bd=bd;
    }

    @override
    public void run() {
        super.run();

        bd.conectarBDMySQL();

        if (bd.getConexionMySQL()!=null){
            try {
                String  resultado=  bd.ejecutarConsultaSQL();
                System.out.println(resultado);
                bd.ejecutarRegistroSQL();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }



    }
En el MainActivity, al botón le asigno el siguiente método para que ejecute las consultas:

Código:
public void ejecutarHilo(View view){
        Thread hiloconexionBD= new HiloConexionBD(new BD());

        hiloconexionBD.start();

    }

Gracias de antemano y un saludo.
Responder Con Cita


  #2  
Viejo 05/12/15, 15:42:12
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
No eres la primera persona que viene por aquí que está haciendo un curso de Android y le mandan conectar directamente a un servidor MySQL. Al final va a ser verdad eso que se dice de "el que sabe sabe y el que no enseña", porque conectar a un servidor MySQL directamente desde un dispositivo Android es una salvajada y de las gordas.

Ahora al tema que nos ocupa, estás empezando la casa por el tejado, deberías empezar por el clásico "Hola Mundo", por que está claro que no sabes lo que es un findViewById si estás preguntando esto.

En el método ejecutarRegistroSql tendrás que añadir 2 parámetros: documento y nombre, ambos String.

Y en tu Activity puedes acceder al contenido de los EditText mediante un findViewById, con los Id definidos en el layout, por ejemplo si tienes 2 EditText en el Layout de la Activity que se llaman "documento" y "nombre" podrás tener algo parecido a esto:

EditText documento = (EditText)findViewById(R.id.documento);
EditText nombre= (EditText)findViewById(R.id.nombre);
bd.ejecutarRegistroSql(documento.getText().toStrin g(), nombre.getText().toString());

Pero como te digo, eso es Android básico, creo que tu profesor debería empezar por enseñaros eso en lugar de algo que si hicieses en cualquier aplicación profesional sería motivo de despido inmediato.
Responder Con Cita
  #3  
Viejo 05/12/15, 16:09:31
Avatar de margaca
margaca margaca no está en línea
Usuario poco activo
Mensajes: 6
 
Fecha de registro: feb 2015
Mensajes: 6
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola!!!

La solución esta que me propones me parece interesante, pero no se como aplicarla a mi caso, ya que yo el método insertar lo tengo dentro del propio run() del hilo, y al pulsar el botón lo que hago es iniciar el hilo.

Para que me funcione la conexión directa con mysql tengo que hacerlo con un hilo aparte del hilo principal porque si no no me funciona.

Gracias, saludos
Responder Con Cita
  #4  
Viejo 05/12/15, 16:24:21
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Pasa los parámetros también en el constructor de HiloConexionBD y luego los usas en el run.
Responder Con Cita
  #5  
Viejo 05/12/15, 16:37:41
Avatar de margaca
margaca margaca no está en línea
Usuario poco activo
Mensajes: 6
 
Fecha de registro: feb 2015
Mensajes: 6
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Mira así es como lo he puesto

clase Hilo:

Código:
public class HiloConexionBD extends Thread {

  private BD bd;

    public HiloConexionBD(BD bd){
        this.bd=bd;
    }

    @override
    public void run() {
        super.run();

        bd.conectarBDMySQL();

        if (bd.getConexionMySQL()!=null){
            try {
                String  resultado=  bd.ejecutarConsultaSQL();
                System.out.println(resultado);
                String doc="";
                String nom="";
                bd.ejecutarRegistroSQL(doc,  nom);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }



    }
}
MainActivity

Código:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        documento=(EditText)findViewById(R.id.editTextDoc);
        nombre=(EditText)findViewById(R.id.editTextNombre);

Método que le asigno al botón de guardar, pero no se como poner el start del hilo los parámetros que tengo
Código:
 public void ejecutarHilo(View view){
        Thread hiloconexionBD= new HiloConexionBD(new BD());

        hiloconexionBD.start();

    }
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 19:33:32 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007