Datenbank Abfragen

  • Antworten:72
  • OffenNicht stickyNicht beantwortet
Gelöschter Account
  • Forum-Beiträge: 37

02.05.2011, 18:53:39 via Website

Hallo Androiden!

Ich habe derzeit ein Projekt in der Schule laufen. Es soll ein App erstellt werden mit dem ich auf die Schuldatenbank zugreife und dn Stundenplan anzeigen lasse. Das Habe ich bislang:

Java
1package AndroidStundenPlan.App;
2
3import java.sql.Connection;
4import java.sql.DriverManager;
5import java.sql.ResultSet;
6import java.sql.Statement;
7
8import android.R.string;
9import android.app.Activity;
10import android.content.Context;
11import android.database.SQLException;
12import android.os.Bundle;
13import android.view.View;
14import android.widget.AdapterView;
15import android.widget.AdapterView.OnItemClickListener;
16import android.widget.AdapterView.OnItemSelectedListener;
17import android.widget.ArrayAdapter;
18import android.widget.Spinner;
19import android.widget.TextView;
20import android.widget.Toast;
21
22public class androidStundenPlanApp extends Activity {
23 /** Called when the activity is first created. */
24
25 @Override
26 public void onCreate(Bundle savedInstanceState) {
27 super.onCreate(savedInstanceState);
28 setContentView(R.layout.main);
29
30 /** Erster Spinner zur Auswahl der Klasse! */
31
32 Spinner s = (Spinner) findViewById(R.id.spinner);
33 ArrayAdapter adapter = ArrayAdapter.createFromResource(
34 this, R.array.Klassen, android.R.layout.simple_spinner_item);
35 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
36 s.setAdapter(adapter);
37 s.setOnItemSelectedListener(new MyOnItemSelectedListener());
38
39 /** Zweiter Spinner Wochenauswahl */
40
41 Spinner d = (Spinner) findViewById(R.id.spinner2);
42 ArrayAdapter adapter2 = ArrayAdapter.createFromResource(
43 this, R.array.wochen, android.R.layout.simple_spinner_item);
44 adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
45 d.setAdapter(adapter2);
46 d.setOnItemSelectedListener(new MyOnItemSelectedListener2());
47
48 }
49 /** Auswertung des Ersten Spinners (Klassenauswahl) */
50 public class MyOnItemSelectedListener implements OnItemSelectedListener {
51
52 public void onItemSelected(AdapterView<?> parent,
53 View view, int pos, long id) {
54 /** Kurzer Popup der auswahl! */
55 Toast.makeText(parent.getContext(), "Die Klasse ist " +
56 parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
57
58 /** Dauerhafte ausgab der AUswahl! */
59 TextView test = (TextView) findViewById(R.id.barname);
60 test.setText("Select * FROM STUNDENPLANDB WHERE Klasse = "+parent.getItemAtPosition(pos).toString());
61
62
63
64 }
65
66
67
68 public void onNothingSelected(AdapterView<?> parent) {
69 // Do nothing.
70 }
71 }
72 /** Auswertung des zweiten Spinners (Wochenauswahl) */
73 public class MyOnItemSelectedListener2 implements OnItemSelectedListener {
74
75 public void onItemSelected(AdapterView<?> parent,
76 View view, int pos, long id) {
77 Toast.makeText(parent.getContext(), "Die Woche ist " +
78 parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
79 }
80 public void onNothingSelected(AdapterView<?> parent) {
81 // Do nothing.
82 }
83 }
84 public class SimpleQuery {
85
86 public void main(String[] args) {
87
88 // Diese Eintraege werden zum
89 // Verbindungsaufbau benoetigt.
90 final String hostname = "localhost";
91 final String port = "3306";
92 final String dbname = "lischa";
93 final String user = "root";
94 final String password = "";
95
96 Connection conn = null;
97
98 try {
99 System.out.println("* Treiber laden");
100 Class.forName("org.gjt.mm.mysql.Driver").newInstance();
101 }
102 catch (Exception e) {
103 System.err.println("Unable to load driver.");
104 e.printStackTrace();
105 }
106 try {
107 System.out.println("* Verbindung aufbauen");
108 String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname;
109 conn = DriverManager.getConnection(url, user, password);
110
111 System.out.println("* Statement beginnen");
112 Statement stmt = conn.createStatement();
113
114 System.out.println("* Abfrage beginnen");
115 String sqlCommand =
116 "SELECT Name, StOrt, Gehalt FROM personal";
117 // "SELECT Name, StOrt, Gehalt FROM personal WHERE Gehalt>50000";
118 ResultSet rs = stmt.executeQuery(sqlCommand);
119
120 System.out.println("* Ergebnisse anzeigen");
121 while (rs.next()) {
122 String name = rs.getString(1);
123 String standort = rs.getString("StOrt");
124 double gehalt = rs.getDouble(3);
125 System.out.println( name+" "+standort+" "+gehalt );
126 }
127
128 System.out.println("* Statement beenden");
129 stmt.close();
130 System.out.println("* Datenbank-Verbindung beenden");
131 conn.close();
132 }
133 catch (SQLException sqle) {
134 System.out.println("SQLException: " + sqle.getMessage());
135 System.out.println("SQLState: " + sqle.getSQLState());
136 System.out.println("VendorError: " + sqle.getErrorCode());
137 sqle.printStackTrace();
138 }
139
140
141 } // ende: public static void main()
142
143 } // ende: public class SimpleQuery */
144}

Main.xml
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:padding="10dip"
5 android:layout_width="fill_parent"
6 android:layout_height="wrap_content">
7
8 <TextView
9
10 android:layout_width="fill_parent"
11 android:layout_height="wrap_content"
12 android:layout_marginTop="10dip"
13 android:text="Bitte wähle deine Klasse:"
14 />
15
16 <Spinner
17 android:id="@+id/spinner"
18 android:layout_width="fill_parent"
19 android:layout_height="wrap_content"
20 android:drawSelectorOnTop="true"
21 android:prompt="@string/planet_prompt"
22 />
23 <TextView
24
25 android:layout_width="fill_parent"
26 android:layout_height="wrap_content"
27 android:layout_marginTop="10dip"
28 android:text="Bitte wähle die Woche:"
29 />
30
31 <Spinner
32 android:id="@+id/spinner2"
33 android:layout_width="fill_parent"
34 android:layout_height="wrap_content"
35 android:drawSelectorOnTop="true"
36 android:prompt="@string/planet_prompt"
37 />
38 <TextView
39 android:id="@+id/barname"
40 android:layout_width="fill_parent"
41 android:layout_height="wrap_content"
42 android:textSize="30sp"
43 android:textStyle="bold"
44 android:layout_marginTop="5dp"
45 android:layout_marginLeft="5dp"
46 />
47
48</LinearLayout>

Arrays.xml
1<?xml version="1.0" encoding="utf-8"?>
2<resources>
3
4 <string-array name="Klassen">
5 <item>FG123</item>
6 <item>FG141</item>
7 <item>FG123</item>
8 <item>FG113</item>
9 </string-array>
10 <string-array name="wochen">
11 <item>1</item>
12 <item>2</item>
13 <item>3</item>
14 <item>4</item>
15
16 </string-array>
17</resources>

Strings.xml
1<?xml version="1.0" encoding="utf-8"?>
2<resources>
3 <string name="hello">Hello World, androidStundenPlanApp!</string>
4 <string name="app_name">AndroidStundenPlanApp</string>
5 <string name="planet_prompt">Choose a planet</string>
6 <string name="mContext">Choose a planet</string>
7 <string name="selection">Choose a planet</string>
8</resources>


Wie man sieht habe ich Zwei Spinner eingebaut. Mit diesen soll der User wählen was das SQL Statement den Server abfragen soll. Später soll es so Funktionieren:
1.Der User wählt Klasse und Woche aus
2.Der User drückt auf "Anfragen"
3.Der User kommt auf einer Neuen Seite den Stundenplan für diese Woche gezeigt.

Derzeit Hänge ich etwas an dem Teil die Datenbank abzufragen:
System.out.println("SQLState: " + sqle.getSQLState());
System.out.println("VendorError: " + sqle.getErrorCode());

An dieser Stelle bekomme ich die Meldung angezeigt: The Method geteErrorCode() is undefined for the type SQLException

Was muss ich tuen? Da ich warscheinlich mehr Hilfe brauchen werde wäre es toll wen sich Jemand finden lässt der mir vieleicht per Teamviewer (natürlich werde ich diesen Beitrag aktualisieren um anderen zu Helfen) weiter hilft.

Bitte um Hilfe

— geändert am 02.05.2011, 19:01:06

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

02.05.2011, 23:55:05 via Website

Tausche mal :

import android.database.SQLException;

gegen

import java.sql.SQLException;

Dann sollte dieser Error verschwinden. Vermutlich hast Du irgendwann beim Autoimport die Frage welches der beiden er verwenden soll falsch beantwortet.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

03.05.2011, 01:29:31 via Website

Danke für die Schnelle Hilfe!

Ich habe es ausgetestet, der Fehler ist nun zwar behoben aber ich bekomme nicht den gewünschten inhalt ausgegeben.
Woran könnte dies liegen?

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

03.05.2011, 10:55:24 via Website

Was heißt, nicht den gewünschten Inhalt? Den falschen oder garkeinen?

Grüße,
Malte

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

03.05.2011, 17:48:37 via Website

Garkein Inhalt wird angezeigt.

— geändert am 05.05.2011, 00:10:57

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

05.05.2011, 00:12:01 via Website

*Refresh, konnte noch keine Lösung des Problems finden*

Antworten
  • Forum-Beiträge: 636

05.05.2011, 23:59:57 via Website

Hi,
ich habe mir das mal angeschaut.
Fange ich mal ganz vor an. Variablen haben immer sprechende Namen s,adapter,adapter2 gehen gar nicht :)
Dann hast du dort eine main-Methode zum testen der Datenbank-Verbindung und deiner Abfrage. In dieser benutzt du den JDBC-Treiber org.gjt.mm. Ich habe es mit dem Treiber gar nicht erst versucht. Ladt dir bitte folgende jar damit hast du nun den JDBC mysql connector.

1Class.forName("org.gjt.mm.mysql.Driver").newInstance();
2änderst du in
3Class.forName("com.mysql.jdbc.Driver").newInstance();

Damit die Klasse (com.mysql.jdbc.Driver) beim Ausführen der main-Methode gefunden wird, muss du diese mit ecplise in den PATH deiner Anwendung packen. Das kannst du hier nachlesen unter dem Punkt "Adding external library (.jar ) to the Java classpath".
Danach kannst du die main-Methode ausführen und bekommst deine Ergebnisse :)

Gruß,
Markus

— geändert am 06.05.2011, 00:01:05

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

06.05.2011, 12:24:32 via Website

Hey danke für die Unterstützung von euch allen.

Leider Funktionuert der Link zu der Jar Datei nicht. Wärst so net den nochmal rein zusetzen? Will nichts falsches runterladen, habe schon danach gegoogelt aber befürchte das ich nicht das Richtige auswähle.


MfG
Roland

Antworten
  • Forum-Beiträge: 30

06.05.2011, 12:30:29 via App

Jörg V.
Tausche mal :

import android.database.SQLException;

gegen

import java.sql.SQLException;

Dann sollte dieser Error verschwinden. Vermutlich hast Du irgendwann beim Autoimport die Frage welches der beiden er verwenden soll falsch beantwortet.

Hallo mal kurz weg von eigentlichen Frage.

Wie funktioniert ein Autoimport? Danke

Gruß Kevin :-)

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

06.05.2011, 12:34:30 via Website

Roland Frescher
Hey danke für die Unterstützung von euch allen.

Leider Funktionuert der Link zu der Jar Datei nicht. Wärst so net den nochmal rein zusetzen? Will nichts falsches runterladen, habe schon danach gegoogelt aber befürchte das ich nicht das Richtige auswähle.


MfG
Roland

Nimm dies .... :kid:

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

06.05.2011, 12:38:36 via Website

Kevin W.
Jörg V.
Tausche mal :

import android.database.SQLException;

gegen

import java.sql.SQLException;

Dann sollte dieser Error verschwinden. Vermutlich hast Du irgendwann beim Autoimport die Frage welches der beiden er verwenden soll falsch beantwortet.

Hallo mal kurz weg von eigentlichen Frage.

Wie funktioniert ein Autoimport? Danke

Gruß Kevin :-)

Wenn Du in Eclipse bspw. schreibst:

Toast.makeText(parent.getContext(), "Die Klasse ist " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();

Wird Eclipse den Code zunächst als Fehlerhaft markieren weil es die zugehörige Codebasis nicht kennt.

Dann drückst Du [Strg] + [Shift] + [O] und wie von Zauberhand fügt Eclipse Deinem Code hinzu:

import android.widget.Toast;

Das ist Autoimport ...

— geändert am 06.05.2011, 12:38:59

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

06.05.2011, 14:45:53 via Website

Hallo,Ich habe es probiert die Jar datei einzubinden und bin daran gescheitert mit dem Fehler:

1[2011-05-06 14:41:04 - AndroidStundenPlanApp] Dx 1 error; aborting
2[2011-05-06 14:41:04 - AndroidStundenPlanApp] Conversion to Dalvik format failed with error 1

Habe gegoogelt und in einigen Beiträgen stand es hängt damit zusammen das die Class schon irgendwo vorkommt und ich sie nicht doppelt einbauen kann. verstehe ich nur nicht weil ich diese JAR nochnie eingebunden hatte. Da stand ich soll versuchen das Project zu Cleanen und andere Tipps die ich probierte aber bisher hat nix geholfen.

MfG
Roland

— geändert am 06.05.2011, 14:46:47

Antworten
  • Forum-Beiträge: 30

06.05.2011, 15:41:24 via App

Jörg V.
Kevin W.
Jörg V.
Tausche mal :

import android.database.SQLException;

gegen

import java.sql.SQLException;

Dann sollte dieser Error verschwinden. Vermutlich hast Du irgendwann beim Autoimport die Frage welches der beiden er verwenden soll falsch beantwortet.

Hallo mal kurz weg von eigentlichen Frage.

Wie funktioniert ein Autoimport? Danke

Gruß Kevin :-)

Wenn Du in Eclipse bspw. schreibst:

Toast.makeText(parent.getContext(), "Die Klasse ist " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();

Wird Eclipse den Code zunächst als Fehlerhaft markieren weil es die zugehörige Codebasis nicht kennt.

Dann drückst Du [Strg] + [Shift] + [O] und wie von Zauberhand fügt Eclipse Deinem Code hinzu:

import android.widget.Toast;

Das ist Autoimport ...

Woah mega cool :-) ich hab immer nach den imports gegoogelt :-) super danke.

Antworten
  • Forum-Beiträge: 636

06.05.2011, 16:10:03 via Website

Roland Frescher
Hallo,Ich habe es probiert die Jar datei einzubinden und bin daran gescheitert mit dem Fehler:

1[2011-05-06 14:41:04 - AndroidStundenPlanApp] Dx 1 error; aborting
2[2011-05-06 14:41:04 - AndroidStundenPlanApp] Conversion to Dalvik format failed with error 1

Habe gegoogelt und in einigen Beiträgen stand es hängt damit zusammen das die Class schon irgendwo vorkommt und ich sie nicht doppelt einbauen kann. verstehe ich nur nicht weil ich diese JAR nochnie eingebunden hatte. Da stand ich soll versuchen das Project zu Cleanen und andere Tipps die ich probierte aber bisher hat nix geholfen.

MfG
Roland

Hi,
in deinem Projekt-Root-Verzeichnis sollte eine .classpath-Datei liegen.
Schreib mir mal bitte den Inhalt hier rein.

Gruß,
Markus

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

06.05.2011, 16:18:58 via Website

1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="src"/>
4 <classpathentry kind="src" path="gen"/>
5 <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
6 <classpathentry kind="lib" path="NewLib/mysql-connector-java-5.1.16.jar"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>

Antworten
  • Forum-Beiträge: 636

08.05.2011, 01:28:34 via Website

Hi,
also ich kann deine Fehler reproduzieren. Eine Lösung für das Problem habe ich nicht. Ich denke aber es handelt sich hier nicht um ein Android-Problem sonder Eclipse hat da Probleme. Ich nutzte zur Programmierung Intellij 10 und dort läuft der entsprechende Code. Die Frage ist also: Was machen Intellij und Eclipse beim Import von externen Jars anders.
Tja, an dieser Stell bin ich nun, komme aber nicht wirklich weiter.

Gruß,
Markus

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

08.05.2011, 17:30:55 via Website

Habe immer noch nicht die Lösung dieses Problemes. Habe schon versucht das project neu zu erstellen sowie es zu Cleanen aber der Fehler die ich zuvor gepostet habe besteht immer noch.

Das einzige was Funktionierte von det Tipps die ich gefunden habe war es auf Propeties zu gehen und die Jar wieder aus dem java Build Path zu entfernen. Das hilft mir aber irgendwie nicht so weiter....

MfG
Roland

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

09.05.2011, 00:03:43 via Website

[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.ExceptionWithContext
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.util.ExceptionWithContext.withContext(ExceptionWithContext.java:46)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:340)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:369)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.access$400(Main.java:59)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.processOne(Main.java:313)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.command.dexer.Main.run(Main.java:185)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at java.lang.reflect.Method.invoke(Unknown Source)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:585)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:490)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx Caused by: java.lang.NullPointerException
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper$SubroutineInliner.involvedInSubroutine(Ropper.java:1518)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper$SubroutineInliner.mapOrAllocateLabel(Ropper.java:1539)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper$SubroutineInliner.copyBlock(Ropper.java:1457)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper$SubroutineInliner.inlineSubroutineCalledFrom(Ropper.java:1412)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper.inlineSubroutines(Ropper.java:1286)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper.doit(Ropper.java:652)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.cf.code.Ropper.convert(Ropper.java:252)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:252)
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx ... 31 more
...while processing reuseAndReadPacket (Lcom/mysql/jdbc/Buffer;I)Lcom/mysql/jdbc/Buffer;
...while processing com/mysql/jdbc/MysqlIO.class

[2011-05-09 00:02:06 - AndroidStundenPlanApp] Dx 1 error; aborting
[2011-05-09 00:02:06 - AndroidStundenPlanApp] Conversion to Dalvik format failed with error 1


Hier ist die ganze Fehlermeldung vieleicht sagt das jemanden was...

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

09.05.2011, 00:22:08 via Website

Scheint als würde dieses Problem bekannt sein.

Schau mal hier: http://code.google.com/p/android/issues/detail?id=14699

Dort wurde fast genau das Problem welches Du hier hast als Defect in der BugList eingetragen und als defect bestätigt!

HIlft Dir jetzt zunächst nix, zeigt aber das es wohl nicht so einfach zu lösen sein wird.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

09.05.2011, 15:20:41 via Website

Gibt es den keine andere Möglichkeit auf meine Datenbank zuzugreifen? Soweit ich weiss gibt es doch die möglichkeit auf den Server auf den sich die Datenbank befinden einen PhP Datei zu hinterlegen. Auf diese PhP Datei greift man mit Java zu und übermittelt die Daten. (Was abgefragt werden soll aus der Datenbank, also das Statement oder wichtige bestandteile davon) Die PhP Datei führt das Statement aus und schickt die Daten wieder zurück zum User und die Java App verarbeitet diese und Zeigt diese an.

So weit zur Theorie...das Praktische ist eine andere Sache ...

— geändert am 09.05.2011, 19:28:37

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

10.05.2011, 16:14:56 via Website

So mal ne Rückmeldung. Habe mit PhP jezt die Datenbank auslesen können! Ich brauchte jezt nurnoch einen Tipp wie ich die Daten von der PhP Datei in mein App reinkriege,bzw müsste ich die Auswahl aus den Spinnern der PhP Datei erstmal übergeben und dan das ergebnis des MySQL Query (was sich derzeit in einer Variable befindet) wieder der Java App übermitteln.

Danke das Ihr immer so schnell Antwortet und so Hilfsbereit seid, dies ist echt ein tolles Forum.

— geändert am 10.05.2011, 16:36:56

Antworten
  • Forum-Beiträge: 636

10.05.2011, 18:44:04 via App

Tja, da muss ich leider passen. Mit php habe ich nichts zutun und will es auch gar nicht :) Ich kann dir nur noch mal sagen such mal nach "REST php mysql" da findest du 100%tig was du brauchst.

Gruß,
Markus

— geändert am 10.05.2011, 18:44:48

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

10.05.2011, 19:11:22 via Website

Weisst du vieleicht wie ich die Daten von der Java datei zur PhP Datei Schicken kann? Wie ich die von dort weiterverarbeite weiß ich bereits nur nicht wie ich die da hinkriege : (

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

10.05.2011, 19:21:48 via Website

Wenn es denn REST für PHP gibt, wird es soetwas vermutlich auch für andere Sprachen wie Java geben ... How to Rest in Android .. (Wider Erwarten sogar in Deutsch .. :) )

Soweit weg kann dieser Gedanke doch nun wirklich nicht gewesen sein ..

— geändert am 10.05.2011, 21:48:54

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

10.05.2011, 19:43:30 via Website

Ich versteh da leider irgendwie nur Bahnhof : ( Immer alles so kompliziert : /

— geändert am 10.05.2011, 20:03:11

Antworten
  • Forum-Beiträge: 636

10.05.2011, 20:59:48 via Website

Roland Frescher
Ich versteh da leider irgendwie nur Bahnhof : ( Immer alles so kompliziert : /

Jau, Informatik hat viel mit dem erklimmen von Hindernissen zutun :)
Also ich kann dir ein Beispiel in Java oder golang anbieten. PHP wollte ich mir dann lieber nicht geben ...


Gruß,
Markus

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

10.05.2011, 21:06:34 via Website

Naja ich dencke dafür das ich noch ein Anfänger bin bin ich ganz gut vorran gekommen...aber das durchschlägt die Schallmauer..werde es mir Morgen ganz in ruhe nochmal anschauen, wenn ich nix auf die Reihe bekomme werde ich wol das Projekt als fehlschlag deklarieren müssen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

11.05.2011, 14:22:02 via Website

Hallo ich habe da was gefunden!

In diesem Forum hat ein USER (wiesel32) bereits das gemacht was Ich ebenfalls vor habe. Wäre toll wen ihr mir helfen könntet dies zu verstehen bzw. in meine App einzubauen, leider muss ich jezt Kopieren da mir die Zeit ausgeht. Wenn ich die Zeit nicht einhalte wird das Projekt einfach als Fehlschlag deklariert. Natürlich werde ich da ich ja einen Code von jemanden anderen verwende dies in meiner Dokumentation mit Link und Namen angeben!

Hier ist mal der Link von dem ich gesprochen habe:
http://www.android-hilfe.de/android-app-entwicklung/39175-daten-aus-mysql-datenbank-auslesen.html

Wen ihr mir helfen könntet das zu verstehen bzw. umzusetzen wäre es sehr toll. (Der PhP teil Funktioniert bereits wie er soll es muss nurnoch der Java teil eingebaut werden)

EDIT:
Die PhP Datei gibt bereits in JSON Format den Inhalt meiner Tabelle wieder.

So sieht die PhP aus:
1<?php
2
3 error_reporting(E_ALL);
4 $adresse = "localhost";
5 $login = "root";
6 $pw = "";
7 $db = "lischa";
8 $SQL2 = "";
9
10mysql_connect($adresse,$login,$pw);
11mysql_select_db($db);
12
13$q=mysql_query("SELECT * FROM agenturen");
14while($e=mysql_fetch_assoc($q))
15 $output[]=$e;
16
17
18$jasonresult= json_encode($output);
19echo $jasonresult;
20mysql_close();
21
22 ?>

und das gibt sie aus:
[{"AgenturNr":"1","Vorwahl":"190","Rufnummer":"2665936","Name":"LiScha","PLZ":"22266","Ort":"Bambsenhausen","Strasse":null,"Hausnummer":"9000"},{"AgenturNr":"2","Vorwahl":"191","Rufnummer":"7895879","Name":"Babudo","PLZ":"22388","Ort":"Alengo","Strasse":"Biberweg","Hausnummer":"256"}]

— geändert am 11.05.2011, 15:08:16

Antworten
  • Forum-Beiträge: 636

11.05.2011, 14:58:49 via Website

Roland Frescher
Naja ich dencke dafür das ich noch ein Anfänger bin bin ich ganz gut vorran gekommen...aber das durchschlägt die Schallmauer..werde es mir Morgen ganz in ruhe nochmal anschauen, wenn ich nix auf die Reihe bekomme werde ich wol das Projekt als fehlschlag deklarieren müssen.

Hi,
jetzt steck den Kopf nicht in den Sand :) Was du da vorhast ist halt nicht ohne, da du zwei Programmiersprachen (Android(java) / PHP) und drei neue Techniken verwenden musst (Android / REST / JSON / XML). Das ist einfach normal wenn es nach einer Woche noch nicht alles läuft.
Was genau verstehst du denn noch nicht ?

Gruß,
Markus

Antworten
  • Forum-Beiträge: 1.544

11.05.2011, 15:08:40 via App

Hey,
guck mal in die Code Snippets, bzw. Tutorial Unterforen. Da gibt es ein Tutorial von L3322, in dem er Daten vom Server liest und (glaub ich) in einer ListView anzeigt..
Oder liegt das Problem woanders? Sollen die Daten lokal gespeichert werden? Oder nur temporär in einem Objekt? (Sorry, wenn einige Fragen schon beantwortet sind, hab mir den Thread nicht komplett durchgelesen)

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

11.05.2011, 15:11:03 via Website

1String result = "";
2//the year data to send
3ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
4nameValuePairs.add(new BasicNameValuePair("year","1980"));
5
6//http post
7try{
8 HttpClient httpclient = new DefaultHttpClient();
9 HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");
10 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
11 HttpResponse response = httpclient.execute(httppost);
12 HttpEntity entity = response.getEntity();
13 InputStream is = entity.getContent();
14}catch(Exception e){
15 Log.e("log_tag", "Error in http connection "+e.toString());
16}
17//convert response to string
18try{
19 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
20 StringBuilder sb = new StringBuilder();
21 String line = null;
22 while ((line = reader.readLine()) != null) {
23 sb.append(line + "\n");
24 }
25 is.close();
26
27 result=sb.toString();
28}catch(Exception e){
29 Log.e("log_tag", "Error converting result "+e.toString());
30}
31
32//parse json data
33try{
34 JSONArray jArray = new JSONArray(result);
35 for(int i=0;i<jArray.length();i++){
36 JSONObject json_data = jArray.getJSONObject(i);
37 Log.i("log_tag","id: "+json_data.getInt("id")+
38 ", name: "+json_data.getString("name")+
39 ", sex: "+json_data.getInt("sex")+
40 ", birthyear: "+json_data.getInt("birthyear")
41 );
42 }
43}
44}catch(JSONException e){
45 Log.e("log_tag", "Error parsing data "+e.toString());
46}

Also, ich habe das mal in meine Java reingemacht, statt dem LINK der da als beispiel angegeben ist kommt der Link meiner PhP rein.

Bekomme aber haufen Fehler mit denen ich nix anfangen kann einige sind aber selbsterklärend...

https://rapidshare.com/files/461899674/AndroidTest2.zip

Hier mal exportiert,sind 9 Fehler, um den überblick euch zu verschaffen.

— geändert am 11.05.2011, 15:22:06

Antworten
  • Forum-Beiträge: 1.544

11.05.2011, 15:18:00 via App

Und was soll jetzt mit den Daten passieren? In der For-Schleife, in der du loggst, könntest du zB alle Werte in einen Array oder eine Liste speichern. Kommt halt drauf an, was damit gemacht werden soll? :grin:
In eine Datenbank für "offline Gebrauch" speichern? Oder nur kurz in eine Liste um damit eine ListView zu füllen (->Anzeigen in der App)?
Lg Ansgar

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

11.05.2011, 15:24:09 via Website

Also die PhP Datei befindet sich bei mir Lokal auf meinem PC in XAMP htpdocs. Die werte sollen im App angezeigt werden also die werte die sich in der $jasonresult variable befinden sollen in der App angezeigt werden. Später wird es aber so sein, das ich dieses App auf meinem Handy habe, die PhP Datei auf meinem PC. Dan soll es so sein das ich unterwegs mir über dieses App die werte anzeigen lassen kann. ( Später ändere ich das ganze noch so das die Spinner das SQL-Statement verändern, sodass ich unterwegs auswählen kann was mir angezeigt werden soll. Für den Anfang reicht es die Spinner, Spinner sein zu lassen und nur das eine Statement abzufragen.)

— geändert am 11.05.2011, 15:28:30

Antworten
  • Forum-Beiträge: 1.544

11.05.2011, 15:38:52 via App

Ok, und kommen die Daten an? Also an welcher Stelle hakt es? Wird im Log angezeigt, was empfangen wird? Oder hast du Probleme, den Code für dich anzupassen? Dachte bis jetzt, die Daten sind heil in der App angekommen..
Lg Ansgar

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

11.05.2011, 15:58:11 via Website

Ich habe ein Problem den Code überhaupt in meine App reinzukriegen. Bekomme errors angezeigt auf die ich nicht weiß zu reagieren (Habe es Exportiert https://rapidshare.com/files/461899674/AndroidTest2.zip damit sich das vieleicht einer Anschaut der mir sagen kann wie ich die Errors lösen kann)

Ich muss die app Spätestens bis Sonntag morgens fertig haben...Weiß auch nicht was sich Lehrer dabei dencken so eine Aufgabe auf so kurze Zeit zu stellen.

— geändert am 11.05.2011, 16:01:29

Antworten
  • Forum-Beiträge: 636

11.05.2011, 23:12:05 via Website

Hi,
ich weiß nicht wie ich es sanft ausdrücken soll aber entweder hapert es bei dir im Moment an der Motivation oder du bist nicht achtsam genug.
Du hast einfach ein Code-Stück in deine Anwendung geballert ohne dir groß Gedanken zu machen und das kann nicht funktionieren! (Haste ja bemerkt :) )
Das Problem waren einfach nur ein paar falsche Klammern und das Code-Stück muss natürlich in eine eigene Methode.

Um nur ein Beispiel aufzuzeigen:
1public class MyOnItemSelectedListener2 implements OnItemSelectedListener
2 {
3 final ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
4 nameValuePairs.add(new BasicNameValuePair("year", "1980"));
5 }

Die Deklaration der Variable "nameValuePairs" ist okay, aber der Aufruf der Methode "add" muss schon in einem Konstruktor / Methode / static initializer oder sonst wo passieren. Da hätte man mit ein bissel Konzentration schon drauf kommen können. Ich geh einfach mal davon aus die ganzen roten Stellen in Eclipse haben dich entmutig.
Ich habe die Datei androidStundenPlanApp.java soweit bearbeitet das der Code wenigstens kompiliert werden kann.

Gruß,
Markus

— geändert am 11.05.2011, 23:12:39

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

11.05.2011, 23:38:49 via Website

Ne bin einfach nur etwas im stress, habe morgen 1e Klausur und 1 Refarat vor mir und musste Lernen und gleichzeitig das hier machen : ( Einfach nur stressig derzeit ich würde das alles viel lieber in ruhe machen...

naja, vielen dank das du dir die mühe gemacht hast : )

— geändert am 11.05.2011, 23:39:36

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

12.05.2011, 19:34:41 via Website

1catch (Exception e)
2 {
3 /** "Hier komme ich raus" */
4 Log.e("log_tag", "Error converting result " + e.toString());
5 }

Hallo,

habe es ausprobiert und stelle Fest das ich an dieser Stelle Rauskomme..Da scheinen ja logs gemacht zu werden wie schaue ich mir die an, bzw wo?
Habe den Link zur PhP Datei richtig eingegeben ( Über den Browser komme ich selbst drauf und kann den Inhalt sehen).
1final HttpPost httppost = new HttpPost("http://localhost/StundenPlanAppDatenbankAbfrage.php");

— geändert am 12.05.2011, 19:47:15

Antworten
  • Forum-Beiträge: 1.544

12.05.2011, 20:25:11 via App

Genau,
wenn eine Exception fliegt (zB Fehler beim Verbinden), kommst du da hin und es wird der Fehler geloggt. Das Log findest du in Eclipse (Benutzt du doch, oder?) unter dem Reiter "DDMS" und da beim Logcat.
Lg Ansgar
P.S. Alternativ in der Konsole: adb logcat

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

12.05.2011, 20:51:32 via Website

Ansgar M
Genau,
Reiter "DDMS" und da beim Logcat.

Wo soll des den sein finde es nicht : =)

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

13.05.2011, 16:22:17 via Website

[quote]05-13 14:20:14.425: ERROR/log_tag(728): Error converting result java.net.SocketException: Permission denied (maybe missing INTERNET permission)
05-13 14:20:14.435: ERROR/log_tag(728): Error parsing data org.json.JSONException: A JSONArray text must start with '[' at character 0 of
[/quote]

So, bekomme diese Errors raus. Verstehe den ersten nicht so ganz, ich komme selbst ja drauf aber das App nicht? Finde den fehler nicht : /

Antworten
  • Forum-Beiträge: 2.644

13.05.2011, 16:39:27 via Website

hab den thread nicht genau verfolgt,

aber hast du in deiner manifest die internet permission gesetzt? ohne internet -> keine daten vom netz

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 37

13.05.2011, 16:48:57 via Website

Ah okay der Fehler is nur weg jezt kommt das stattdessen :
05-13 14:46:22.590: ERROR/log_tag(764): Error converting result org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused

Antworten