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?
Bitte lesen: http://stackoverflow.com/questions/15853367/jdbc-vs-web-service-for-android –