Autore Topic: Collegare un Database MySQL ad un applicazione Android  (Letto 11642 volte)

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Collegare un Database MySQL ad un applicazione Android
« il: 19 Novembre 2012, 17:37:19 CET »
0
hi there. Devo sviluppare un'applicazione che elabori dati prendendoli da un DB creato con MySQL. Ho seguito diversi tutorial ma molti di essi sono risultati inconcludenti. Qualcuno di voi mi può aiutare, magari linkandomi qualche buon tutorial?


Vi chiederei aiuto direttamente, chiedendovi codici etcc, ma mi rendo conto che sarebbe un operazione lunga e noiosa per chi lo deve scrivere, quindi punto ai tutorial.

Grazie!
True perfection has to be imperfect

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #1 il: 19 Novembre 2012, 18:09:13 CET »
0
Ma intendi accedere ad un db da remoto?

Intanto guardati questo tutorial: [medio] Creazione e utilizzo di un database SQLite
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #2 il: 20 Novembre 2012, 09:45:21 CET »
0
Ma intendi accedere ad un db da remoto?

Intanto guardati questo tutorial: [medio] Creazione e utilizzo di un database SQLite

Sì, lavoro su un host remoto.
Io ho creato già un database utilizzando phpMyAdmin.
Per farti capire, sto creando un app per uno studio dentistico, e devo gestire prenotazioni di visite e altro(ad esempio quale dottore è presente in sede). Tutti questi dati li ho nel mio DB, e devo interfacciarmi con esso dalla mia applicazione.
Non devo quindi creare un database locale...
True perfection has to be imperfect

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #3 il: 21 Novembre 2012, 18:10:06 CET »
+1
Ti conviene creare una pagina php che restituisca un json con i dati che ti interessano: qui
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #4 il: 22 Novembre 2012, 10:44:53 CET »
0
Ti conviene creare una pagina php che restituisca un json con i dati che ti interessano: qui

Molto utile, ti ringrazio!
True perfection has to be imperfect

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #5 il: 22 Novembre 2012, 13:28:53 CET »
0
ma sbaglio ho google mette a disposizione piccoli spazi web per applicazioni di questo  tipo?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #6 il: 22 Novembre 2012, 15:32:59 CET »
+1
ma sbaglio ho google mette a disposizione piccoli spazi web per applicazioni di questo  tipo?
google app engine
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #7 il: 22 Novembre 2012, 20:20:19 CET »
0
Grazie mille nicola e questo vale anche se ci voglio mettere un database mysql d'appoggio giusto?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #8 il: 22 Novembre 2012, 21:02:48 CET »
0
Grazie mille nicola e questo vale anche se ci voglio mettere un database mysql d'appoggio giusto?
si, c'è anche la possibilità di usare un db, non so se mysql,oracle,berkley db o cosa, mi ricordo che ci sono piu opzioni, tra le quali una molto object based...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #9 il: 22 Novembre 2012, 21:35:40 CET »
0
grazie mille di tutto :-)

Offline Fenicexx

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #10 il: 13 Dicembre 2012, 11:00:19 CET »
0
Ciao,
riprendo questa discussione perchè anch'io ho lo stesso problema.
Ho seguito tutta la procedura, ma l'app crasha.
Penso che il problema sta nel fatto che il db a cui voglio collegarmi è quello di joomla.  Ho bisogno di scaricare delle informazioni caricate tramite un componente.
È un problema di permessi? Altro?

Grazie

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #11 il: 13 Dicembre 2012, 11:47:44 CET »
0
Ciao,
riprendo questa discussione perchè anch'io ho lo stesso problema.
Ho seguito tutta la procedura, ma l'app crasha.
Penso che il problema sta nel fatto che il db a cui voglio collegarmi è quello di joomla.  Ho bisogno di scaricare delle informazioni caricate tramite un componente.
È un problema di permessi? Altro?

Grazie

Non saprei, posta un pò di codice che vediamo! ;-)
True perfection has to be imperfect

Offline Fenicexx

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #12 il: 13 Dicembre 2012, 12:03:45 CET »
0
Prima di collegarmi direttamente al database di joomla ho fatto una prova seguendo questo tutorial: https://fahmirahman.wordpress.com/2011/04/21/connection-between-php-server-and-android-client-using-http-and-json/[/url]

Per prima cosa ho creato un database di prova nel mio dominio (joomla è già installato) poi ho scritto uno script php
Codice: [Seleziona]
<?php
  mysql_connect("ip del mio sito","nome utente","password");
  mysql_select_db("FOOD");
  $sql=mysql_query("select * from FOOD where FOOD_NAME like 'A%'");
  while($row=mysql_fetch_assoc($sql)) $output[]=$row;
  print(json_encode($output));
  mysql_close();
?>
Il file l'ho caricato su: [url]www.miodominio.it/prova/food.php

L'activity è questa:

Codice: [Seleziona]
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;


import android.net.ParseException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;


public class Food extends Activity {
        //view
        private EditText editTextShow;
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
               
                editTextShow = (EditText)findViewById(R.id.editTextShow);
                 
                HttpGetTask task = new HttpGetTask();
                task.execute(editTextShow.getText().toString());
        }
       
        private class HttpGetTask extends AsyncTask<String,String,String> {

                @Override
                protected String doInBackground(String... params) {
                        String result = null;
                        InputStream is = null;
                        StringBuilder sb=null;
                       

                        //http post
                        try{
                                HttpClient httpclient = new DefaultHttpClient();
                                HttpPost httppost = new HttpPost("http://www.miosito.it/prova/food.php");
                                List<? extends NameValuePair> nameValuePairs = null;
                                httppost.setEntity((HttpEntity) new UrlEncodedFormEntity(nameValuePairs));
                                HttpResponse response = httpclient.execute(httppost);
                                HttpEntity entity = response.getEntity();
                                is = entity.getContent();
                        }catch(Exception e){
                                Log.e("log_tag", "Errore nella connessione http"+e.toString());
                        }
               
                        //convert response to string
                        try{
                                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso bla bla bla"),8);
                                sb = new StringBuilder();
                                sb.append(reader.readLine() + "\n");
                                String line="0";
                     
                                while ((line = reader.readLine()) != null) {
                                        sb.append(line + "\n");
                                }
                               
                                is.close();
                                result=sb.toString();
                               
                        }catch(Exception e){
                                Log.e("log_tag", "Errore su result "+e.toString());
                        }

                        //paring data
                        int fd_id;
                        String fd_name;
                        try{
                      JSONArray jArray = new JSONArray(result);
                      JSONObject json_data=null;
                     
                      for(int i=0;i<jArray.length();i++){
                                        json_data = jArray.getJSONObject(i);
                                        fd_id=json_data.getInt("FOOD_ID");
                                        fd_name=json_data.getString("FOOD_NAME");
                      }
                     
                        }catch(JSONException e1){
                                Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show();
                        }catch (ParseException e1){
                                e1.printStackTrace();
                        }

                                return null;
                }
       
       
        }       
       
}


Nel manifest ho aggiunto:
Codice: [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #13 il: 14 Dicembre 2012, 09:22:59 CET »
0
Dovresti postare il logcat dell'errore, cosiì è più facile aiutarti  ;-)
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline Fenicexx

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
Re:Collegare un Database MySQL ad un applicazione Android
« Risposta #14 il: 14 Dicembre 2012, 17:30:17 CET »
0
Ecco il LogCat:
Codice: [Seleziona]
12-14 17:24:44.195: I/ApplicationPackageManager(18512): cscCountry is not German : ITV
12-14 17:24:44.215: D/dalvikvm(18512): GC_EXTERNAL_ALLOC freed 43K, 50% free 2710K/5379K, external 0K/0K, paused 20ms
12-14 17:24:44.240: E/log_tag(18512): Errore nella connessione httpjava.lang.NullPointerException
12-14 17:24:44.240: E/log_tag(18512): Errore su result java.lang.NullPointerException
12-14 17:24:44.240: W/dalvikvm(18512): threadid=9: thread exiting with uncaught exception (group=0x4001e578)
12-14 17:24:44.240: E/AndroidRuntime(18512): FATAL EXCEPTION: AsyncTask #1
12-14 17:24:44.240: E/AndroidRuntime(18512): java.lang.RuntimeException: An error occured while executing doInBackground()
12-14 17:24:44.240: E/AndroidRuntime(18512):         at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.lang.Thread.run(Thread.java:1019)
12-14 17:24:44.240: E/AndroidRuntime(18512): Caused by: java.lang.NullPointerException
12-14 17:24:44.240: E/AndroidRuntime(18512):         at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:112)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at org.json.JSONTokener.nextValue(JSONTokener.java:90)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at org.json.JSONArray.<init>(JSONArray.java:87)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at org.json.JSONArray.<init>(JSONArray.java:103)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at it.giovannicuccia.Food$HttpGetTask.doInBackground(Food.java:92)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at it.giovannicuccia.Food$HttpGetTask.doInBackground(Food.java:1)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-14 17:24:44.240: E/AndroidRuntime(18512):         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
12-14 17:24:44.240: E/AndroidRuntime(18512):         ... 4 more
12-14 17:24:58.410: I/Process(18512): Sending signal. PID: 18512 SIG: 9