2017-05-09 2 views
1

Ich kämpfe seit einiger Zeit mit einem Problem. Ich habe eine DB in einem kostenlosen Hosting-Server installiert (fdb3.freehostingeu.com). Die DB ist MySql. Ich habe eine JAR-Datei für die DB-Verbindung von here importiert. Ich habe es als eine Abhängigkeit in der Gradle importiert, ich habe die Internet-Berechtigungen im Manifest und alles festgelegt. Ich verwende AsyncTasc für die Verbindung. Hier ist die Klasse mit den Methoden.android: Verbinden Sie MySql mit JDBC

public class CheckLogin extends AsyncTask<String,String,String> 
{ 
    String z = ""; 
    Boolean isSuccess = false; 

    @Override 
    protected void onPreExecute() 
    { 
//   progressBar.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected void onPostExecute(String r) 
    { 
//   progressBar.setVisibility(View.GONE); 
     Toast.makeText(LoginActivity.this, r, Toast.LENGTH_SHORT).show(); 
     if(isSuccess) 
     { 
      Toast.makeText(LoginActivity.this , "Login Successfull" , Toast.LENGTH_LONG).show(); 
      //finish(); 
     } 
    } 

    @Override 
    protected String doInBackground(String... params) 
    { 
     java.sql.Connection con; 
     String usernam = params[0]; 
     String passwordd = params[1]; 
     if(usernam.trim().equals("")|| passwordd.trim().equals("")) 
      z = "Please enter Username and Password"; 
     else 
     { 
      try 
      { 
       con = connectionclass(); 

       if (con == null) 
       { 
        z = "Check Your Internet Access!"; 
       } 
       else 
       { 
        // Change below query according to your own database. 
        String query = "select * from owner where mail = '" + usernam.toString() + "' and password = '"+ passwordd.toString() +"' "; 
        Statement stmt = con.createStatement(); 
        ResultSet rs = stmt.executeQuery(query); 
        if(rs.next()) 
        { 
         z = "Login successful"; 
         isSuccess=true; 
         con.close(); 
        } 
        else 
        { 
         z = "Invalid Credentials!"; 
         isSuccess = false; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       isSuccess = false; 
       z = ex.getMessage(); 
      } 
     } 
     return z; 
    } 
} 


@SuppressLint("NewApi") 
public java.sql.Connection connectionclass() 
{ 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    java.sql.Connection connection = null; 
    String ConnectionURL = null; 
    try 
    { 
      Class.forName("com.mysql.jdbc.Driver"); 

      connection = DriverManager.getConnection(url, un, pas); 

    } 
    catch (SQLException se) 
    { 
     Log.e("error here 1 : ", se.getMessage()); 
    } 
    catch (ClassNotFoundException e) 
    { 
     Log.e("error here 2 : ", e.getMessage()); 
    } 
    catch (Exception e) 
    { 
     Log.e("error here 3 : ", e.getMessage()); 
    } 
    return connection; 
} 

Ich habe die URL bei

jdbc:mysql://185.176.43.41:3306/DB_name 

gesetzt, wo der Server-IP und der Port 3306 als die Seite sagt. Und die usernmae und das Passwort, wie ich mit der DB verbinden.

Ich glaube nicht, dass ich etwas falsch verwenden, aber immer noch, wenn ich meine app Debuggen erhalte ich eine Ausnahme:

java.sql.SQLException: Kann nicht auf alle Hosts aufgrund Ausnahme verbinden: java. net.SocketException: java.net.ConnectException: failed zu /185.176.43.41 (Port 3306) verbinden: failed Verbindung: ECONNREFUSED (Connection refused)

** VERSCHACHTELTE AUSNAHME BEGIN **

java.net.SocketException MESSAGE: java.net.ConnectException: Fehler beim Verbindung zu /185.176.43.41 (Port 3306): Verbindung fehlgeschlagen: ECONNREFUSED (Verbindung verweigert)

STACKTRACE:

Java .net.SocketException: java.net.ConnectException: Verbindung fehlgeschlagen zu /185.176.43.41 (Port 3306): Verbindung fehlgeschlagen: ECONNREFUSED (Verbindung verweigert) um com.mysql.jdbc.StandardSocketFactory.connect (StandardSocketFactory.java: 143) bei com.mysql.jdbc.MysqlIO. (MysqlIO.java:225) um com.mysql.j dbc.Connection.createNewIO (Connection.java:1805) um com.mysql.jdbc.Connection. (Connection.java:452) um com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:411) bei Java .sql.DriverManager.getConnection (DriverManager.java:179) bei java.sql.DriverManager.getConnection (DriverManager.java:213) bei com.example.hotelreseration.LoginActivity.connectionclass (LoginActivity.java:234) bei com.example.hotelraseration.LoginActivity $ CheckLogin.doInBackground (LoginActivity.java:184) um com.beispiel.hotelraseration.LoginActivity $ CheckLogin.doInBackground (LoginActivity.java:149) bei android.os.AsyncTask $ 2.call (AsyncTask.java307) unter java.ut il.concurrent.FutureTask.run (FutureTask.java:237) um android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:246) um java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) um java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:588) bei java.lang.Thread.run (Thread.java: 833)

** ENDE VERSCHACHTELTE AUSNAHME **

Die java.sql.Connection connection null ist, wird es nicht verwenden, um die (url, un, pas)

Ive einen Weg zu finden versucht, 2 Tage jetzt habe ich alles ausprobiert. Ich habe keine Ahnung von SQL-Datenbanken und ich kann den Unterschied zwischen MySql und MSSql nicht erkennen und versuche weiterhin, eine Verbindung zu diesem Host mit jtds herzustellen, bis ich verstanden habe, dass meine Datenbank MySql ist.

Wenn jemand mir hier helfen kann, bietet dieser Host eine MySql DB, oder?

Kann ich es verwenden, um eine DB zu speichern und die Daten auf meiner Android-App mit JDBC zu reverve?

Ist die Art, wie ich versuche, richtig oder nicht?

+0

Bitte lesen: http://stackoverflow.com/questions/15853367/jdbc-vs-web-service-for-android –

Antwort

1

Ihre Datenbank-URL jdbc:mysql://185.176.43.41:3306/DB_name muss in irgendeinem Teil falsch sein, entweder DB_name ist nicht der Name oder 185.176.43.41:3306 ist nicht der richtige Host. Versuchen Sie zunächst, localhost zu verwenden, versuchen Sie es lokal, stellen Sie sicher, dass es funktioniert, ändern Sie Ihre URL zu einem anderen.

+0

Der DB-Name ist nur ein Beispiel, mein richtiger DB-Name ist korrekt. Also das Problem ist, dass ich etwas mit der URL vermisse? Der Code ist in Ordnung? Ich frage, weil ich nicht weiß, wo ich mich konzentrieren soll. Danke – Kzaf

+0

Wie kann ich sehen, ob dies der richtige Host ist? – Kzaf

+0

Wenn Sie Ihre mysql konfigurieren, denken Sie an die Konfiguration ist der localhost mit dem Port 3306. Wenn Sie neu sind, können Sie ein Werkzeug wie mysql workbench verwenden, es wird Ihnen viel helfen, und dann können Sie erstellen eine lokale instanz von localhost: 3306, starte deinen mysql-service und führe danach deine app aus (ändere die adresse und den port natürlich) –