Android java.lang.RuntimeException:使用Kotlin执行doInBackground()时出错 override-fun-onCreate(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) callPostReq() val sm=someTask() sm.execute() } 内部类someTask():AsyncTask(){ 重写fun doInBackground(vararg参数:String):数组{ val conn:连接=空!! val url=“jdbc:mysql://localhost:3306/" val dbName=“db-01” val driver=“com.mysql.jdbc.driver” val cred=Properties() 信用证(“用户名”、“用户名”) cred.put(“密码”、“密码”) 试一试{ Class.forName(驱动程序).newInstance() conn=DriverManager.getConnection(url,cred) println(“连接到数据库”) 康涅狄格州关闭 println(“与数据库断开连接”) }捕获(e:例外){ e、 printStackTrace() } 返回空 } }

Android java.lang.RuntimeException:使用Kotlin执行doInBackground()时出错 override-fun-onCreate(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) callPostReq() val sm=someTask() sm.execute() } 内部类someTask():AsyncTask(){ 重写fun doInBackground(vararg参数:String):数组{ val conn:连接=空!! val url=“jdbc:mysql://localhost:3306/" val dbName=“db-01” val driver=“com.mysql.jdbc.driver” val cred=Properties() 信用证(“用户名”、“用户名”) cred.put(“密码”、“密码”) 试一试{ Class.forName(驱动程序).newInstance() conn=DriverManager.getConnection(url,cred) println(“连接到数据库”) 康涅狄格州关闭 println(“与数据库断开连接”) }捕获(e:例外){ e、 printStackTrace() } 返回空 } },android,sql,jdbc,kotlin,Android,Sql,Jdbc,Kotlin,致命异常:AsyncTask#1 流程:highway.DueAmpount,PID:15746 java.lang.RuntimeException:执行doInBackground()时出错 在android.os.AsyncTask$3.done处(AsyncTask.java:325) 位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 位于java.util.concurrent.FutureT

致命异常:AsyncTask#1 流程:highway.DueAmpount,PID:15746 java.lang.RuntimeException:执行doInBackground()时出错 在android.os.AsyncTask$3.done处(AsyncTask.java:325) 位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 位于java.util.concurrent.FutureTask.setException(FutureTask.java:223) 位于java.util.concurrent.FutureTask.run(FutureTask.java:242) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 运行(Thread.java:760) 原因:kotlin.KotlinNullPointerException 在highway.dueMount.MainActivity$someTask.doInBackground上(MainActivity.kt:60) 在highway.dueMount.MainActivity$someTask.doInBackground上(MainActivity.kt:57) 位于android.os.AsyncTask$2.call(AsyncTask.java:305) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 运行(Thread.java:760)


您正在尝试展开null。只需移除!!它会起作用的

  override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            callPostReq()
            val sm = someTask()
            sm.execute()
        }
inner class someTask(): AsyncTask<String, Int, Array<String>>() {
    override fun doInBackground(vararg params: String): Array<String>?  {
        val conn: Connection= null!!
        val url = "jdbc:mysql://localhost:3306/"
        val dbName = "db-01"
        val driver = "com.mysql.jdbc.Driver"
        val cred = Properties()
        cred.put("username","username")
        cred.put("password","pasword")

        try {
            Class.forName(driver).newInstance()
            conn = DriverManager.getConnection(url,cred)
            println("Connected to the database")
            conn.close()
            println("Disconnected from database")
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return null
    }
}

您好,您的MYSQL服务器正在您的PC上运行,但您的Android设备将无法看到它。因此,您应该编写一个连接到数据库的RESTAPI,该数据库可以将数据以类似JSON的合理格式发送到Android设备
val conn: Connection= null