Android und MYSQL???

  • Antworten:5
  • Bentwortet
Dominic Warzok
  • Forum-Beiträge: 19

15.05.2012, 08:13:40 via Website

Guten Morgen,

ich versuche grade von meiner App Daten von einer Mysql-Datenbank zu bekommen, die auf einem externen Server liegt.

Ich habe auch schon Google befragt und bin immer wieder auf die PHP Variante wie in diesem Tutorial gestoßen.

Die Frage ist jetzt, gibt es da auch einen anderen Weg? Weil ich habe nicht Lust für etliche SQL-Abfragen jedes mal eine Php Datei anzulegen.
Mit dem JDBC Connector geht es anscheinend nicht aber vielleicht kann man ja auch die Datenbank auf das Handy kopieren und dann dort abfragen oder so ?!

Wenn das gar nicht geht, was benutzt man dann am besten Serverseitig ?

Ich freue mich auf eure Tips.

Lg Dominic

Antworten
Daniel online
  • Forum-Beiträge: 282

15.05.2012, 08:55:24 via Website

Wenn du nicht mehrere Php-Files anlegen möchtest übergib doch einfach eine Variable an der du die SQL-Statements unterscheidest. Aber bitte auf keinen Fall den gesamenten SQL-String übergeben, außer du überprüfst eine Injection.

Antworten
Dominic Warzok
  • Forum-Beiträge: 19

15.05.2012, 12:19:28 via Website

Daniel online
Wenn du nicht mehrere Php-Files anlegen möchtest übergib doch einfach eine Variable an der du die SQL-Statements unterscheidest. Aber bitte auf keinen Fall den gesamenten SQL-String übergeben, außer du überprüfst eine Injection.

Ok das wäre eine Option allerdings müsste ich bei einem Update auf 300 Servern auch immer das php File mit updaten und deswegen wär er halt cool wenn es ohne php geht.

Antworten
Felix
  • Forum-Beiträge: 259

16.05.2012, 10:45:54 via Website

Tach!

Dominic Warzok
[...] wär er halt cool wenn es ohne php geht.

Hast du dazu nicht auch Aussagen gefunden, dass man dazu die MySQL-Client-API irgendwie in das Android-Gerät bekommen muss?

vielleicht kann man ja auch die Datenbank auf das Handy kopieren und dann dort abfragen oder so ?!

Ja, wenn du die Daten in eine SQLite-Datenbank umschreibst. Ansonsten müsstest du dir einen MySQL-Server für Android programmieren.


Felix.

Antworten
Dominic Warzok
  • Forum-Beiträge: 19

16.05.2012, 10:49:09 via Website

Felix

Hast du dazu nicht auch Aussagen gefunden, dass man dazu die MySQL-Client-API irgendwie in das Android-Gerät bekommen muss?

Eh ja ich habe grade noch mal Google befragt und ein Beispiel gefunden wie man mit JDBC in Android auf eine Oracle Datenbank zugreift. Naja das muss ich jetzt halt umschreiben... Geht aber nur sehr langsam vorwärts.

Edit:
In dem Thread wird erklärt wie man auf eine Oracle Datenbank zugreift. Ich habe das dann mal auf Java Umgeschrieben. Die Connect Methode sieht jetzt so aus:

1public class ConnectMySql
2{
3
4 private String Username = "android";
5 private String Password = "****";
6 private String Driver = "com.mysql.jdbc.Driver";
7 private final String URL = "jdbc:mysql://serverip:3306/stb";
8 private Connection connection;
9
10 ...
11
12 public void Connect()
13 {
14 try
15 {
16 // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
17 // Class<?> forName = Class.forName(this.Driver);
18 Driver d = (Driver) Class.forName(Driver).newInstance();
19 DriverManager.registerDriver(d);
20 this.connection = DriverManager.getConnection(this.URL, this.Username, this.Password);
21 }
22 catch (Exception e)
23 {
24 e.printStackTrace();
25 System.out.println("Error Connecting with User:" + Username + " and Password:" + Password);
26 }
27 }

Dabei fliegt jetzt immer eine Class not Found Exception:

105-16 10:56:00.400: W/System.err(1556): java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
205-16 10:56:00.410: W/System.err(1556): at java.lang.Class.classForName(Native Method)
305-16 10:56:00.410: W/System.err(1556): at java.lang.Class.forName(Class.java:227)
405-16 10:56:00.410: W/System.err(1556): at java.lang.Class.forName(Class.java:174)
505-16 10:56:00.410: W/System.err(1556): at de.xplace.iptv.ConnectMySql.Connect(ConnectMySql.java:72)
605-16 10:56:00.410: W/System.err(1556): at de.xplace.iptv.ConnectMySql.<init>(ConnectMySql.java:23)
705-16 10:56:00.420: W/System.err(1556): at de.xplace.iptv.VideoStreamActivity.openDialog(VideoStreamActivity.java:116)
805-16 10:56:00.420: W/System.err(1556): at java.lang.reflect.Method.invokeNative(Native Method)
905-16 10:56:00.420: W/System.err(1556): at java.lang.reflect.Method.invoke(Method.java:491)
1005-16 10:56:00.420: W/System.err(1556): at android.view.View$1.onClick(View.java:2678)
1105-16 10:56:00.420: W/System.err(1556): at android.view.View.performClick(View.java:3110)
1205-16 10:56:00.420: W/System.err(1556): at android.view.View$PerformClick.run(View.java:11934)
1305-16 10:56:00.430: W/System.err(1556): at android.os.Handler.handleCallback(Handler.java:587)
1405-16 10:56:00.430: W/System.err(1556): at android.os.Handler.dispatchMessage(Handler.java:92)
1505-16 10:56:00.430: W/System.err(1556): at android.os.Looper.loop(Looper.java:132)
1605-16 10:56:00.430: W/System.err(1556): at android.app.ActivityThread.main(ActivityThread.java:4157)
1705-16 10:56:00.430: W/System.err(1556): at java.lang.reflect.Method.invokeNative(Native Method)
1805-16 10:56:00.430: W/System.err(1556): at java.lang.reflect.Method.invoke(Method.java:491)
1905-16 10:56:00.430: W/System.err(1556): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
2005-16 10:56:00.430: W/System.err(1556): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
2105-16 10:56:00.430: W/System.err(1556): at dalvik.system.NativeStart.main(Native Method)
2205-16 10:56:00.430: W/System.err(1556): Caused by: java.lang.NoClassDefFoundError: com.mysql.jdbc.Driver
2305-16 10:56:00.430: W/System.err(1556): ... 20 more
2405-16 10:56:00.430: W/System.err(1556): Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver in loader dalvik.system.PathClassLoader[/data/app/de.xplace.iptv-1.apk]
2505-16 10:56:00.440: W/System.err(1556): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
2605-16 10:56:00.440: W/System.err(1556): at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
2705-16 10:56:00.440: W/System.err(1556): at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
2805-16 10:56:00.440: W/System.err(1556): ... 20 more

Hat jemand von euch eine Idee wie man die wegbekommt ?

Lg

— geändert am 16.05.2012, 12:07:45

Antworten
Dominic Warzok
  • Forum-Beiträge: 19

16.05.2012, 12:09:48 via Website

Also nach ein paar Anfragen geht es jetzt. Wichtig ist der Ordner in dem das JDBC-Jar liegt muss libs heißen und nicht lib.

Ansonsten noch haufenweise Berechtigungen auf unserem Server geändert und jetzt geht es :D


Vielen Dank für eure Tips

Thorsten

Antworten