SQLException: не удалось создать соединение с сервером базы данных (состояние: 08001) - PullRequest
0 голосов
/ 06 октября 2019

Я занимаюсь разработкой приложения для Android, в котором я хотел бы подключиться к удаленной базе данных, чтобы получать статистику всех пользователей. Я установил gradle и добавил зависимость для драйвера jdbc и добавил код Java. Однако, когда я запускаю мой эмулятор Android, он дает мне следующий результат:

driver loaded
SQLException: Could not create connection to database server.
SQLState: 08001
Error: 0

Как вы можете видеть, драйвер загружается, и это также не удаленный сервер, так как я настроил его на своем компьютере с помощью mysqlworkbench итам прекрасно работает. Я попробовал несколько решений в интернете, таких как обновление разъема до версии 8. Насколько я могу судить, это проблема с драйвером, поэтому я также попытался установить локальный jar, который дал ту же проблему

Любая помощь будет отличной!

build.gradle (приложение)

apply plugin: 'com.android.application'

// Add static analysis and jacoco
apply from: "$project.rootDir/gradle/static-analysis-tools/static-analysis.gradle"
apply from: "$project.rootDir/gradle/reports/jacoco.gradle"

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "edu.chalmers.moonwalk"
        minSdkVersion 15
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled true
        }
    }
}

dependencies {
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.17'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
//...
}

database.java

public class Database {
    private String user = "myuser";
    private String pass = "mypass";
    private String dbClass = "com.mysql.jdbc.Driver";

    private String dbDriver = "jdbc:mysql://remotemysql.com:3306/mydatabasename";

    private Connection connection = null;

    private QueryExecutor queryExecutor;

    /**
     * Connect to the database.
     */
    public void connect() {
        try {
            Class.forName(dbClass).newInstance();
            System.out.println("driver loaded");
        } catch (Exception ex) {
            System.out.println("something went wrong");
            System.err.println(ex);
        }
        // Connection
        try {
            connection = DriverManager.getConnection(dbDriver, user, pass);
            System.out.println("connected");
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("Error: " + ex.getErrorCode());
        }
    }
}
...