Android - Recoger datos de un formulario

   
Vista:

Recoger datos de un formulario

Publicado por ohara (3 intervenciones) el 05/12/2015 13:57:55
Hola,

Estoy comenzando en esto de android y debo hacer una aplicación que me guarde los datos de un formulario en una base de datos mysql, pero la conexión es directa con el jdbc, nada de json, ni php...

Por mucho que he buscado todo lo que encuentro es utilizando sqLite o json, etc.
He probado a insertar mi registro indicandole los datos y lo hace de forma correcta, ahora quisiera que estos datos me los cogiese de un formulario.

La estructura de mi proyecto es la siguiente:

clase BD, que tiene los datos para realizar la conexión a mysql y los métodos de consulta e insertar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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 Hilo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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();
            }
        }
 
 
 
    }
}

Y la MainActivity que será mi ventana principal donde tendré los campos para introducir los registros y el botón guardar.

Ahora mismo para hacer las pruebas, la acción que realiza mi botón es inicializar el hilo, de esta manera:

1
2
3
4
5
6
public void ejecutarHilo(View view){
        Thread hiloconexionBD= new HiloConexionBD(new BD());
 
        hiloconexionBD.start();
 
    }

¿Alguien me puede echar una mano para saber cómo estructurar mi proyecto para poder recoger los datos del formulario?

Gracias de ante mano, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Recoger datos de un formulario

Publicado por Programador (2 intervenciones) el 05/12/2015 14:15:10
Las conexiones directas no funcionan bien. Miráte los videos de MySQL con JSON y PHP para acceder desde Android de la siguiente lista:

https://www.youtube.com/playlist?list=PLoq0YHvpcFc4hNDgg1bRU91GH35CPjcju

Además, te puedes bajar los códigos de Github.
Espero que te ayude!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Recoger datos de un formulario

Publicado por ohara (3 intervenciones) el 05/12/2015 14:21:51
Hola!!

Ya lo se que no son muy recomendables por seguridad y por la propia forma de funcionar, pero me han dicho que debo hacerlo de esta manera, por eso busco cómo recoger los datos de un formulario haciendo la conexión con un hilo.

La conexión me funciona, e inserto datos que pongo directamente en el INSERT TO ... VALUES, mi duda es cómo recogerlos de un formulario.

Muchas gracias por tus indicaciones, pero debo seguir este método.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar