2017-02-15 3 views
0

Wir haben derzeit das gleiche Problem wie hier: How to connect Android Studio with SQL Server database, aber es wurde nicht beantwortet.Wie verbinde ich Android Studio mit der SQL Server-Datenbank?

Wir auch erfolgreich die Verbindung auf Eclipse, mit der sqljdb4.jar Datei, wir versuchten auf Android den gleichen Code wie in Eclipse, aber es funktioniert nur auf Eclipse.

Wir haben auch einen anderen Treiber, jtds1.3.1.jar, aber es hat nicht funktioniert entweder

Wir ersetzten die Login und Passwort von x und y;)

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_flux_sequence); 

    String url = "jdbc:jtdc:sqlserver://vps342074.ovh.net/IZY309"; 
    //String url = "jdbc:jtdc:sqlserver://vps342074.ovh.net/MSSQLSERVER;databaseName=IZY309"; 
    //String url = "jdbc:sqlserver://vps342074.ovh.net\\MSSQLSERVER;databaseName=IZY309"; 
    String user = "x"; 
    String pass = "y"; 

    try { 
     //TextView textViewToChange = (TextView) findViewById(R.id.textViewCol5); 
     //textViewToChange.setText("Hello"); 
     Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, user, pass); 

     Statement statement = con.createStatement(); 
     ResultSet resultat = statement.executeQuery("SELECT CATEGORIE FROM dbo.PPROFIL WHERE CATEGORIE = 'ac' "); 
     while (resultat.next()) { 

      String result = resultat.getString(1); 
      TextView textViewToChange = (TextView) findViewById(R.id.textViewCol5); 
      textViewToChange.setText(result); 
      Log.d("My Custom Tag", result); 


     }resultat.close(); 
     statement.close(); 
    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

private static void close(Connection con) { 
    // TODO Auto-generated method stub 
    close(con); 

} 

Hier sind die zurückgegebenen Fehler:

W/System.err: java.sql.SQLException: No suitable driver 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at java.sql.DriverManager.getConnection(DriverManager.java:186) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at java.sql.DriverManager.getConnection(DriverManager.java:213) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at 
com.example.gaetan.fluxsequence.flux_sequence.onCreate(flux_sequence.java:32) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.Activity.performCreate(Activity.java:6876) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.ActivityThread.access$1100(ActivityThread.java:222) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.os.Looper.loop(Looper.java:158) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:7229) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
02-15 14:34:01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+2

Wie genau alles, was Sie versucht haben, funktioniert nicht? Es stürzt ab? gibt Ausnahmen? Wenn ja, wo ist die Ausnahme stacktrace? –

+1

Ihre URL hat ein falsches Format. Der richtige sollte sein: "String url =" jdbc: jtds: sqlserver: // [SERVER_ADDRESS]/[DB_NAME] ";' –

+0

Vielen Dank für Ihre Hilfe! @Perak Sola: Diese Syntax ändert nichts, was wir denken, aber wir haben die folgenden Fehler zu beginnen (@Vlad Matvienko): W/System.err: java.sql.SQLException: Keine geeigneten Treiber 02-15 14: 34: 01.896 4180-4180/com.beispiel.gaetan.fluxsequenz W/System.err: at java.sql.DriverManager.getConnection (DriverManager.java:186) 02-15 14: 34: 01.896 4180-4180/com.example.gaetan.fluxsequence W/System.err: at java.sql.DriverManager.getConnection (DriverManager.java:213) 02-15 14: 34: 01.896 4180-4180/com.beispiel.gaetan.fluxsequenz Do hast du ein paar ratschläge? – mhyeah

Antwort

0

Der Fehler, den Sie bekommen, weil Sie die Zeile Class.forName("net.sourceforge.jtds.jdbc.Driver");

fehlen

hinzufügen, bevor die Datenbankverbindung, so wird es in Ihrem Code wie folgt aussehen:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 

komplette Code:

String url = "jdbc:jtdc:sqlserver://vps342074.ovh.net/IZY309"; 
try { 
    //TextView textViewToChange = (TextView) findViewById(R.id.textViewCol5); 
    //textViewToChange.setText("Hello"); 
    Class.forName("net.sourceforge.jtds.jdbc.Driver"); 

    Connection con = DriverManager.getConnection(url, user, pass); 

    Statement statement = con.createStatement(); 
    ResultSet resultat = statement.executeQuery("SELECT CATEGORIE FROM dbo.PPROFIL WHERE CATEGORIE = 'ac' "); 
    while (resultat.next()) { 

     String result = resultat.getString(1); 
     TextView textViewToChange = (TextView) findViewById(R.id.textViewCol5); 
     textViewToChange.setText(result); 
     Log.d("My Custom Tag", result); 
    } 
    resultat.close(); 
    statement.close(); 

} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Sind Sie sicher mit der "jdbc: jtdc" in der URL und der "jtds.jdbc" in der Class.forName()? – mhyeah

+0

Ja. Aktualisieren Sie auch Ihre URL wie in der Antwort. –

+0

Ok. Wir haben es geschafft, aber es gibt auch "keinen geeigneten Fahrer" zurück. Hast du vielleicht andere Ideen? – mhyeah

0

Bevor Sie Verbindung herstellen, können Sie 2 Zeilen Code hinzufügen müssen wie: (kann sein)

package com.ipvsoft.sendsms.utility; 

import android.os.StrictMode; 
import android.util.Log; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class SQLConnection { 
    private static final String LOG = "DEBUG"; 
    private static String ip = "192.168.3.85"; 
    private static String port = "1433"; 
    private static String classs = "net.sourceforge.jtds.jdbc.Driver"; 
    private static String db = "THTData"; 
    private static String un = "sa"; 
    private static String password = "admin"; 
    public static Connection connect() { 
     Connection conn = null; 
     String ConnURL = null; 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     try { 
      Class.forName(classs); 
      ConnURL = "jdbc:jtds:sqlserver://" + ip +":"+port+";" 
        + "databaseName=" + db + ";user=" + un + ";password=" 
        + password + ";"; 
      conn = DriverManager.getConnection(ConnURL); 
     } catch (SQLException e) { 
      Log.d(LOG, e.getMessage()); 
     } catch (ClassNotFoundException e) { 
      Log.d(LOG, e.getMessage()); 
     } 
     return conn; 
    } 
} 
Verwandte Themen