Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android连接到Mysql数据库_Java_Android_Mysql - Fatal编程技术网

Java Android连接到Mysql数据库

Java Android连接到Mysql数据库,java,android,mysql,Java,Android,Mysql,我无法在Android应用程序中连接到远程mysql数据库,因为该应用程序找不到合适的驱动程序 apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { multiDexEnabled true vectorDrawables.useSupportLibrary = true applicationId "com.e

我无法在Android应用程序中连接到远程mysql数据库,因为该应用程序找不到合适的驱动程序

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        applicationId "com.example.test.testapp"
        minSdkVersion 20
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    //https://stackoverflow.com/questions/37048731/gson-library-in-android-studio/37049457
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.android.support:design:26.1.0'
    //    implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
    compile 'com.android.support:support-annotations:27.1.1'
//    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//    implementation files('libs/mysql-connector-java-5.1.46.jar')
    //    compile project(':mysql-connector-java-5.1.46')
    //    compile project(':libs/mysql-connector-java-5.1.46.jar')
    implementation files('libs/mysql-connector-java-5.1.46-bin.jar')
}
这是发生异常的java类

public ServerSave() throws SQLException, ClassNotFoundException {
        // load and register JDBC driver for MySQL
        Class.forName("com.mysql.jdbc.Driver");

        this.conn = getConnection("jdbc:mariadb://remote.host.example/" + SQL_DATABASE, SQL_USER_NAME, SQL_PASSWORD);
    }
我认为这是一个配置问题,但我不知道如何解决它。 我将mysql jar文件复制到android项目文件夹中的libs目录。 我正在为这个项目使用android studio


谢谢你的帮助。

我没有直接解决它。我创建了一个与mysql数据库对话的RESTAPI

将Android应用程序远程连接到MySQL通常是一个非常糟糕的主意,因为将MySQL实例暴露在普通互联网上是非常危险的。是否可以在应用程序和数据库之间构建API层?我的想法是使用mysql用户访问权限和存储过程来处理这个问题。这是对数据库安全模型的用途和功能的常见误解。API可以实现非常复杂的访问控制系统。MySQL本身真的不能。它不打算作为公共服务公开。存储过程没有足够的保护。系统中最有价值的资产是数据库,应该尽可能地锁定和保护它。如果您给予直接访问权,您的风险将成倍增加。@AceofSpade为了进入您的数据库,您已经在APK中向您的数据库提供了密码。在那一点上你就完蛋了。这是你永远不应该做的第一件事。我在api中弄乱了一些东西,而不是数据库中有一个bug,这不是更可能吗?当然,两者兼用会更好。