Android - MsSQL

plex88

Mitglied
Guten Morgen miteinander!
Ich versuche seit einigen Tagen in meiner Android app vergeblich auf einen Microsoft SQL Server 2008R2 zu connecten. Als Library verwende ich JTDS. Ich zeige euch hier meine Connection Klasse:
Java:
public ArrayList<String> GetData()
	   {
		ArrayList<String> tmp = new ArrayList<String>();
	      try {
	         Class.forName("net.sourceforge.jtds.jdbc.Driver");
	         Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://xxxxxxxx.stratoserver.net:1433;instance=SQLEXPRESS;user=sa;password=pass");
	         
	         Statement statement = conn.createStatement();
	         String queryString = "SELECT * FROM test.dbo.artikel";
	         ResultSet rs = statement.executeQuery(queryString);
	         while (rs.next()) 
	         {
	        	 tmp.add(rs.getString(1));
	        	 tmp.add(rs.getString(2));
	        	 tmp.add(rs.getString(3));
	        	 tmp.add(rs.getString(4));
	        	 tmp.add(rs.getString(5));
	         }
	         return tmp;
	      } catch (Exception e) {
	         e.printStackTrace();
	         return tmp;
	      }
	   }
In der Logcat gibt es folgendes auszusetzten:
Code:
07-30 11:04:27.339: W/System.err(7503): java.sql.SQLException: Unable to get information from SQL Server: xxxxxxxx.stratoserver.net.
07-30 11:04:27.339: W/System.err(7503): 	at net.sourceforge.jtds.jdbc.MSSqlServerInfo.<init>(MSSqlServerInfo.java:97)
07-30 11:04:27.339: W/System.err(7503): 	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:276)
07-30 11:04:27.339: W/System.err(7503): 	at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:187)
07-30 11:04:27.339: W/System.err(7503): 	at java.sql.DriverManager.getConnection(DriverManager.java:175)
07-30 11:04:27.347: W/System.err(7503): 	at java.sql.DriverManager.getConnection(DriverManager.java:140)
07-30 11:04:27.347: W/System.err(7503): 	at com.android.Test.artikel.ConnectMSSQLServer.GetData(ConnectMSSQLServer.java:15)
07-30 11:04:27.347: W/System.err(7503): 	at com.android.Test.artikel.TestArtikel$4.onClick(TestArtikel.java:184)
07-30 11:04:27.347: W/System.err(7503): 	at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
07-30 11:04:27.347: W/System.err(7503): 	at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 11:04:27.347: W/System.err(7503): 	at android.os.Looper.loop(Looper.java:137)
07-30 11:04:27.347: W/System.err(7503): 	at android.app.ActivityThread.main(ActivityThread.java:4896)
07-30 11:04:27.347: W/System.err(7503): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-30 11:04:27.347: W/System.err(7503): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-30 11:04:27.355: W/System.err(7503): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
07-30 11:04:27.355: W/System.err(7503): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
07-30 11:04:27.355: W/System.err(7503): 	at dalvik.system.NativeStart.main(Native Method)
Der Server ist ein Rootserver von Strato und ich kann auch problemlos im Büro per Management Studio drauf zugreifen. Deswegen kann ich ein Verbindungsproblem ausschliessen. Es würde mich sehr freuen wenn Ihr einen Tipp für mich hättet dieses Problem zu lösen denn ich komm einfach nicht weiter :oops:
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
Muss es denn der jtds-Driver sein? Was spricht gegen den jdbc-Treiber von Microsoft?
 

plex88

Mitglied
weil er mir dann diesen fehler hier wirft:
Code:
07-30 12:04:14.597: E/dalvikvm(9745): Could not find class 'javax.sql.XAConnection', referenced from method com.microsoft.sqlserver.jdbc.SQLServerConnection.poolCloseEventNotify
ein import von "javax.sql.*;" bringt leider auch nichts.
 
S

SlaterB

Gast
mal den Gedanken eingeworfen, vielleicht schon bekannt und einbezogen, dann zumindest klargestellt:
https://groups.google.com/forum/?fromgroups#!topic/android-developers/yOh84ICDzLw

In general you don't want to do that - connect directly to your SQL
server from Android. If your Android device is on the same subnet,
and you configure host resolution and port access, you *might* be able
to do that, I have never really thought to try, but it's certainly not
the normal path.

Normally, you will want a server side API, like REST or such, that you
can call from Android using HTTP or something. That way your device
can connect to your server side API and it doesn't need to know
anything about it being a SQLServer [..]


wenn ich weiter umherschaue wird das auch woanders empfohlen, es gibt anscheinend kein Tutorial für Android direkt auf eine DB?
du kannst das natürlich dennoch wünschen, aber ob das so sinnvoll ist wenn du dann Hilfe anderer anfragst?
nun gut, auch dann denkbar, dafür ist ein Forum da,
aber es sei nun zumindest erwähnt, dass das anscheinend eher Bastelstand als normales Vorgehen ist,
Titel noch bisschen angepasst
 
Zuletzt bearbeitet von einem Moderator:

plex88

Mitglied
Also ich habs jetzt hinbekommen! Natürlich Teile ich das Ergebnis, in diesen Fall wird eine Artikelnummer übergeben und mithilfe dieser die Spalte in der Artikeldatenbank ausgelesen.
Java:
public ArrayList<String> dbConnect(String artikelnummer,String server,String username,String password,String database)
   {
	   ArrayList<String> tmp = new ArrayList<String>();
	   StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
	   StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
       try
       {
           Class.forName("net.sourceforge.jtds.jdbc.Driver");
           Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://"+server+":1433/"+database,username,password);
           Statement statement = conn.createStatement();
	       String queryString = "SELECT * FROM "+database+".dbo.artikel WHERE artikelnummer='"+artikelnummer+"';";
	       ResultSet rs = statement.executeQuery(queryString);
	       while (rs.next()) 
	       {
	       	 tmp.add(rs.getString(1));
	       	 tmp.add(rs.getString(2));
	       	 tmp.add(rs.getString(3));
	       	 tmp.add(rs.getString(4));
	       	 tmp.add(rs.getString(5));
	       }
	       conn.close();
           return tmp;
       }
       catch (Exception e)
       {
           e.printStackTrace();
           return tmp;
       }
   }
 
S

SlaterB

Gast
der Fehler trat doch bei getConnection() auf, deine Query war und ist wohl herzlich egal,

ein richtiger Connection-String mit "jdbc:jtds:sqlserver://" usw. mag wichtig sein, sonst halt richtige externe Treiber

edit:
> StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());

usw. klingt auch interessant, sind das wichtige Zeilen zur Vermeidung des Fehlers?
 

plex88

Mitglied
Ja ohne striken Modus funktionierts nicht
der Fehler trat doch bei getConnection() auf, deine Query war und ist wohl herzlich egal,

ein richtiger Connection-String mit "jdbc:jtds:sqlserver://" usw. mag wichtig sein, sonst halt richtige externe Treiber

edit:
> StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());

usw. klingt auch interessant, sind das wichtige Zeilen zur Vermeidung des Fehlers?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
T Android Studio & Firebase Datenbankprogrammierung 2
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
A Android Datenbank einbeziehen Datenbankprogrammierung 6
mihe7 MSSQL Express als Kommunikationsmedium Datenbankprogrammierung 8
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
T berechnetes Feld mssql Datenbankprogrammierung 7
M Verbindung mit MSSQL hängt! Datenbankprogrammierung 2
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
C [MSSQL] Datenbankverbindung will nicht klappen... Datenbankprogrammierung 2
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
D MSSQL JDTS JTL Datenabnk Datenbankprogrammierung 7
F MSSQL-Server Verbindung Datenbankprogrammierung 5
B Japanische Zeichen in MSSQL-DB speichern Datenbankprogrammierung 2
B MSSQL und NetBeans IDE 6.8 Datenbankprogrammierung 2
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
H CSV Datei in MSSQL DB oder doch SQL Script Datenbankprogrammierung 11
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
A MSSQL - Datenbank mit Punkt Datenbankprogrammierung 3
A MSSQL - Spalten mit der Option: NULL zulassen Datenbankprogrammierung 2
Landei MsSql Express Server 2008 Datenbankprogrammierung 8
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
G MSSQL - SQL DriverManager - Funktionen Datenbankprogrammierung 2
W Connect zu MSSQL will einfach nicht Datenbankprogrammierung 3
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
M Datum's String in MSSQL oder MySQL wie konvertieren ? Datenbankprogrammierung 3
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
B Fortschrittsanzeige bei Datenübermittlung von MsSQL DB Datenbankprogrammierung 13
R Hilfe mit Umlauten und MSSQL Datenbankprogrammierung 10

Ähnliche Java Themen

Neue Themen


Oben