Einzelne Daten aus MYSQL Datenbank auslesen

  • Antworten:5
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 45

14.12.2016 18:12:00 via Website

Hallo,

ich habe ein Problem mit dem Auslesen von Daten aus einer MySQl-Datenbank.

Das Eintragen und komplett Ausgeben von Daten in bzw. aus der Datenbank funktioniert super.

Nun möchte ichzu Übungszwecken eine App erstellen, bei der man einen x-Wert und einen y-Wert eingibt. Diese sollen dann von der Datnebank einzeln ausgelesen werden und als Graph dargetsellt werden.

Mit diesem Code hole ich mir die KOMPLETTE Datenbank:

protected void showList() {
        try {
            JSONObject jsonObj = new JSONObject(myJSON);
            data = jsonObj.getJSONArray(TAG_RESULTS);

            for (int i = 0; i < data.length(); i++) {
                JSONObject c = data.getJSONObject(i);
                String x = c.getString(TAG_X);
                String y = c.getString(TAG_Y);

                HashMap<String, String> data = new HashMap<String, String>();

                data.put(TAG_X, "x=" + x);
                data.put(TAG_Y, "y=" + y);

                dataList.add(data);

                //Hier einsetzen


            }
            ListAdapter adapter = new SimpleAdapter(
                    MainActivity.this, dataList, R.layout.list_item,
                    new String[]{TAG_X, TAG_Y},
                    new int[]{R.id.x_list, R.id.y_list}

            );

            list.setAdapter(adapter);

        } catch (JSONException e) {
            e.printStackTrace();
        }


    }

    public void getData() {
        class GetDataJSON extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... params) {
                DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
                HttpPost httppost = new HttpPost(".../get-graph.php");

                // Depends on your web service
                httppost.setHeader("Content-type", "application/json");

                InputStream inputStream = null;
                String result = null;
                try {
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();

                    inputStream = entity.getContent();
                    // json is UTF-8 by default
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();

                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    result = sb.toString();
                } catch (Exception e) {
                    // Oops
                } finally {
                    try {
                        if (inputStream != null) inputStream.close();
                    } catch (Exception squish) {
                    }
                }
                return result;
            }

            @Override
            protected void onPostExecute(String result) {
                myJSON = result;
                showList();
            }
        }
        GetDataJSON g = new GetDataJSON();
        g.execute();


    }

An der Stelle "Hier einsetzen" hätte ich nun, um einzelne int-Werte in ein Array zu schreiben, folgendes eingesetzt:

                    int xParsed = Integer.parseInt(x);
                    int yParsed = Integer.parseInt(y);

                    arrayX[i]=xParsed;
                    arrayY[i]=yParsed;

Leider funktioniert das nicht so wie ich das möchte.

Kann mir bitte jemand helfen, der mehr Ahnung hat als ich Laie :D

Danke!

  • Forum-Beiträge: 2.214

14.12.2016 18:29:38 via Website

Hallo Basti,

die Verwendung von HashMap ist ein wenig antiquiert, du solltest eher auf Array(List) basis arbeiten

ArrayList < Integer > data = new ArrayList();
data.add(Integer.parseInt(x));
data.add(Integer.parseInt(x));

— geändert am 14.12.2016 18:31:08

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 2.214

14.12.2016 21:08:29 via Website

Man kann hier nur vermuten , denn du erklärst oben nicht , wie du dein statisches Array
arrayX initiierst.

Bis dato sehe ich nur , dass du einen simplen String (im JSON format) ermittelst.
Wie du den dann letztendlich parst, ist mir unbekannt.

Aber bei sowas - arrayX[i]=xParsed; - musst du im Vorfeld wissen , was da angeschossen kommt (Größe)
deshalb an dieser stelle erst mal meine Antwort

Beim ListAdapter würde ich dann genau aus diesem Grunde eher mit einem Baseadapter arbeiten

— geändert am 14.12.2016 21:12:54

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 45

14.12.2016 21:10:58 via Website

Das Array ist als integer initialisiert. Die Daten aus der Datenbank als String. Deswegen wollte ich meine StringWerte auf integer Werte parsen.
Kann man das so nicht machen?

  • Forum-Beiträge: 2.214

14.12.2016 21:18:59 via Website

doch doch das ist richtig : Integer.parseInt() ... das kann man so machen.

Der Wurm liegt meines Erachtens an deinem statischen Array.
Das hat man mal so gemacht , deshalb mein Beispiel

Liebe Grüße - Stefan
[ App - Entwicklung ]