Hallo,
ich würde gerne eine Datenbankverbindung unter Android herstellen.
Das der bessere Weg über ein Webservice wäre ist mir zwar bewusst, ich würde das aber vorerst gerne so umsetzten.
Folgender Code funktioniert unter Eclipse (Java Desktop Applikation):
In Android Studio wir mir hiermit:
aber folgender Fehler geworfen, wenn ich diese mit dem Emulator ausführe:
Die main Activity sieht wie folgt aus:
Hat hier jemand eine Idee dazu.
Danke
ich würde gerne eine Datenbankverbindung unter Android herstellen.
Das der bessere Weg über ein Webservice wäre ist mir zwar bewusst, ich würde das aber vorerst gerne so umsetzten.
Folgender Code funktioniert unter Eclipse (Java Desktop Applikation):
Java:
String connectionString = "jdbc:jtds:sqlserver://127.0.0.1:58688/Android;instance=ANDROID_TEST";
String userName = "Android";
String password = "AndroidPass123";
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver"); //specify the jtds driver
Connection conn = DriverManager.getConnection(connectionString, userName, password); //establish connection
System.out.println("Connection properly established");
}
catch (Exception e)
{
e.printStackTrace();
}
In Android Studio wir mir hiermit:
Java:
public class TestKlasse2 extends AsyncTask<Void,Void,String> {
@Override
protected String doInBackground(Void... voids) {
String connectionString = "jdbc:jtds:sqlserver://10.0.2.2:58688/Android;instance=ANDROID_TEST";
String userName = "Android";
String password = "AndroidPass123";
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver"); //specify the jtds driver
Connection conn = DriverManager.getConnection(connectionString, userName, password); //establish connection
System.out.println("Connection properly established");
}
catch (Exception e)
{
e.printStackTrace();
}
return "test";
}
}
aber folgender Fehler geworfen, wenn ich diese mit dem Emulator ausführe:
Code:
07-13 15:44:33.213 2144-2144/com.example.flix.datenbanktester D/gralloc_goldfish﹕ Emulator without GPU emulation detected.
07-13 15:44:40.943 2144-2144/com.example.flix.datenbanktester I/System.out﹕ los gehts
07-13 15:44:40.993 2144-2157/com.example.flix.datenbanktester D/dalvikvm﹕ GC_FOR_ALLOC freed 134K, 12% free 2840K/3200K, paused 3ms, total 3ms
07-13 15:44:41.193 2144-2157/com.example.flix.datenbanktester D/dalvikvm﹕ GC_FOR_ALLOC freed 333K, 16% free 3020K/3580K, paused 0ms, total 0ms
07-13 15:44:41.203 2144-2157/com.example.flix.datenbanktester I/dalvikvm﹕ Could not find method org.ietf.jgss.GSSManager.getInstance, referenced from method net.sourceforge.jtds.jdbc.TdsCore.createGssToken
07-13 15:44:41.203 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: unable to resolve static method 2633: Lorg/ietf/jgss/GSSManager;.getInstance ()Lorg/ietf/jgss/GSSManager;
07-13 15:44:41.203 2144-2157/com.example.flix.datenbanktester D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0001
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester I/dalvikvm﹕ Could not find method org.ietf.jgss.GSSContext.initSecContext, referenced from method net.sourceforge.jtds.jdbc.TdsCore.sendGssToken
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: unable to resolve interface method 2627: Lorg/ietf/jgss/GSSContext;.initSecContext ([BII)[B
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester D/dalvikvm﹕ VFY: replacing opcode 0x72 at 0x0008
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: unable to resolve exception class 312 (Lorg/ietf/jgss/GSSException;)
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: unable to find exception handler at addr 0x4c
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: rejected Lnet/sourceforge/jtds/jdbc/TdsCore;.sendGssToken ()V
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: rejecting opcode 0x0d at 0x004c
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ VFY: rejected Lnet/sourceforge/jtds/jdbc/TdsCore;.sendGssToken ()V
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ Verifier rejected class Lnet/sourceforge/jtds/jdbc/TdsCore;
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0xb0f0f648)
07-13 15:44:41.213 2144-2157/com.example.flix.datenbanktester E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.VerifyError: net/sourceforge/jtds/jdbc/TdsCore
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:359)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:179)
at java.sql.DriverManager.getConnection(DriverManager.java:213)
at com.example.flix.datenbanktester.TestKlasse2.doInBackground(TestKlasse2.java:32)
at com.example.flix.datenbanktester.TestKlasse2.doInBackground(TestKlasse2.java:11)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
************at java.lang.Thread.run(Thread.java:841)
Die main Activity sieht wie folgt aus:
Java:
package com.example.flix.datenbanktester;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Homescreen extends Activity {
Button btnConnect, btnArtikel;
TextView errorview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homescreen);
btnConnect = (Button) findViewById(R.id.btnConnect);
btnConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("los gehts");
new TestKlasse2().execute();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.homescreen, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Hat hier jemand eine Idee dazu.
Danke
Zuletzt bearbeitet: