Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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
Android 为什么在我的Kotlin MySQL应用程序中找不到合适的驱动程序?_Android_Kotlin_Jdbc_Mysql Connector - Fatal编程技术网

Android 为什么在我的Kotlin MySQL应用程序中找不到合适的驱动程序?

Android 为什么在我的Kotlin MySQL应用程序中找不到合适的驱动程序?,android,kotlin,jdbc,mysql-connector,Android,Kotlin,Jdbc,Mysql Connector,我尝试在我的基本Kotlin应用程序中使用mysql数据,我使用的是Android Studio。我检索了数据并将它们打印到控制台中,只运行“Test.kt”文件。但是我想在文本视图和其他东西中使用它 当我想运行整个应用程序时,我面临“找不到合适的驱动程序”错误 这是我的密码: MainActivity.kt package com.example.dbtest import androidx.appcompat.app.AppCompatActivity import android.o

我尝试在我的基本Kotlin应用程序中使用mysql数据,我使用的是Android Studio。我检索了数据并将它们打印到控制台中,只运行“Test.kt”文件。但是我想在文本视图和其他东西中使用它

当我想运行整个应用程序时,我面临“找不到合适的驱动程序”错误

这是我的密码:

MainActivity.kt

package com.example.dbtest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    var list = ArrayList<DataModel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {

            list = DBCon.connection()

            for (i in 0 until list.size){
                if (i == list.size){
                    textView.text = list[list.size].firstName + list[list.size].lastName
                }
            }
        }
    }
}
package com.example.dbtest

import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException

object DBCon {

    @JvmStatic
    fun connection(): ArrayList<DataModel> {

        var list = ArrayList<DataModel>()

        try {
            val connection = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1:3306/testdb",
                "root",
                ""
            )

            val statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)
            val result = statement.executeQuery("SELECT `id`, `firstName`, `lastName` FROM `testtable`")

            while (result.next()){

                list.add(DataModel(result.getInt("id"), result.getString("firstName"),result.getString("lastName")))

            }

        } catch (e: SQLException) {
            e.printStackTrace()
        }

        return list
    }
}
package com.example.dbtest

fun main(){

    var list = ArrayList<DataModel>()
    list = DBCon.connection()

    for (i in 0 until list.size){
        println(list[i].id.toString() + "- " + list[i].firstName + " " + list[i].lastName)
    }

}
package com.example.dbtest

data class DataModel(val id: Int, val firstName: String, val lastName: String)
我是科特林的新手,我学到了很多新东西来解决这个问题,但我不能。请引导我解决这个问题。提前谢谢

另外,为了解决这个问题,我在搜索的基础上做了一些事情:

  • 添加jar文件->mysql-connector-java-8.0.21并用作库//已完成
  • 尝试添加->Class.forName(“com.mysql.jdbc.Driver”)//未工作
  • 尝试添加->Class.forName(“com.mysql.cj.jdbc.Driver”)//未工作
  • 添加权限->“android.permission.INTERNET”//未工作
  • 甚至尝试使用->AsyncTask//也没有成功

JDBC不是适用于Android应用程序的解决方案。JDBC不是为不可靠的Internet连接而构建的。它还要求您公开访问数据库,并将登录凭据烘焙到应用程序中,这是一个安全问题。请考虑做其他事情,比如让Web服务安全地处理数据库I/O,你的应用程序与Web服务对话。MySQL Connector/J 8.0库不能在Android上使用,因为它依赖于Android上不可用的Java类和功能。它可以在单个kt文件上工作,但不能作为整个应用程序工作,这一事实令人怀疑,并认为我做错了什么。现在我知道了原因和下一步要做什么,谢谢@commonware!!