Olá. Eu estou iniciando no Android. Gostaria de fazer uma aplicação para trabalhar com Mysql. Estou tentando conectar da mesma maneira do Java desktop. Adicionei a lib do Mysql no projeto. Criei uma classe DAO, e lá inicializei a conexão. O problema é que a conexão não está sendo feita corretamente mesmo com as credenciais corretas. Segue aí a classe:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{tkfentretenimento.com.formatura92app/tkfentretenimento.com.formatura92app.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.access$700(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5365)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at tkfentretenimento.com.formatura92app.GlobalDAO.getBox(GlobalDAO.java:26)
at tkfentretenimento.com.formatura92app.MainActivity.onCreate(MainActivity.java:41)
at android.app.Activity.performCreate(Activity.java:5326)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.access$700(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5365)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Application terminated.
Tem duas coisas que eu acho que vale a pena falar. Primeiro, eu já tentei com localhost ao invés do ip. Segundo, eu estou executando no Android Studio porém em um tablet pela USB.
Pesquise essa mensagem de erro no google, voce vai achar fácil a solução, só retire o IP.
Se sua aplicação Android for rodar em rede local esta solução pode até ser aceitável acessando o banco em uma thread separada, mas fora isso o ideal seria usar web services, seguindo REST por exemplo.
Bizarra ou não, deveria funcionar.
Lógico que eu preferiria subir uma aplicação simples, como webservive REST e disponibilizar o crud por esta, mas, nem todo mundo faria da mesma forma.
Essa implementação é do driver e não da plataforma. Caso contrário, não seria preciso incluir drivers nos projetos para interação com bancos de dados.
E, sim, existe um SGDB no android: SQLite (ok, não é um Oracle da vida, mas é um SGBD)