简体   繁体   English

Android Studio,Db 连接错误:发生异常情况导致驱动程序失败。 请报告此异常

[英]Android Studio, Db connection error: Something unusual has occurred to cause the driver to fail. Please report this exception

I'm opening this discussion because I have a big issue regarding a school project in Android that I'm working on.我开始这个讨论是因为我有一个关于我正在处理的 Android 学校项目的大问题。 Right now I have a free database with the online service ElephantSQL.现在我有一个在线服务 ElephantSQL 的免费数据库。

The database is perfect because when I try to connect it to a project written in java using IntelliJIDEA everything works fine.该数据库非常完美,因为当我尝试使用 IntelliJIDEA 将其连接到用 java 编写的项目时,一切正常。 However, if I try to connect the database with the same credentials (ip, username, password etc) in Android Studio with code written in Kotlin, the connection fails everytime.但是,如果我尝试使用用 Kotlin 编写的代码在 Android Studio 中使用相同的凭据(ip、用户名、密码等)连接数据库,则每次连接都会失败。

I've been working on this the whole day and I've tried every solution I found on internet but it still doesn't work.我整天都在研究这个问题,我已经尝试了我在互联网上找到的所有解决方案,但它仍然不起作用。

Here are my build.gradle file dependencies这是我的 build.gradle 文件依赖项

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation 'org.postgresql:postgresql:42.2.5.jre7'

    implementation 'net.sourceforge.jtds:jtds:1.3.1'
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

and this is my code这是我的代码

package com.example.myapplication

import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import android.os.StrictMode
import android.os.StrictMode.ThreadPolicy
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import java.sql.Connection
import java.sql.DriverManager
import java.sql.SQLException


var username = "myUsername";
var password = "password";
var  url = "jdbc:postgresql://tyke.db.elephantsql.com:5432/myUsername";
private var connection: Connection? = null

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

}
    fun start(view: View?) {
        ActivityCompat.requestPermissions(
            this,
            arrayOf(Manifest.permission.INTERNET),
            PackageManager.PERMISSION_GRANTED
        )
        val policy = ThreadPolicy.Builder().permitAll().build()
        StrictMode.setThreadPolicy(policy)
        try {
            Class.forName("org.postgresql.Driver")
            connection = DriverManager.getConnection(url, username, password)
            Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show()
            Log.d("client","connected")
        } catch (e: ClassNotFoundException) {
            e.printStackTrace()
            Toast.makeText(this, "Class fail", Toast.LENGTH_SHORT).show()
            Log.d("client","1 not connected")
        } catch (e: SQLException) {
            e.printStackTrace()
            Log.d("client","2 not connected"+e)
            Toast.makeText(this, "Connected no", Toast.LENGTH_SHORT).show()
        }
    }
}

This is the error that occurs every time这是每次都会出现的错误

org.postgresql.util.PSQLException: The connection attempt failed. org.postgresql.util.PSQLException:连接尝试失败。

I'm hoping for a little help because I'm stuck and I don't know what to do.我希望能得到一点帮助,因为我被困住了,我不知道该怎么办。 Thank you in advance!先感谢您!

*This is the full stack trace of error, maybe it can be of help! *这是错误的完整堆栈跟踪,也许它可以提供帮助!

2022-05-25 10:28:25.143 20453-20453/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 20453
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:446)
        at android.view.View.performClick(View.java:7125)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441)
        at android.view.View.performClick(View.java:7125) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131) 
        at android.view.View.performClickInternal(View.java:7102) 
        at android.view.View.access$3500(View.java:801) 
        at android.view.View$PerformClick.run(View.java:27336) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292)
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
        at org.postgresql.Driver.makeConnection(Driver.java:454)
        at org.postgresql.Driver.connect(Driver.java:256)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:218)
        at com.example.myapplication.MainActivity.start(MainActivity.kt:39)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441) 
        at android.view.View.performClick(View.java:7125) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131) 
        at android.view.View.performClickInternal(View.java:7102) 
        at android.view.View.access$3500(View.java:801) 
        at android.view.View$PerformClick.run(View.java:27336) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: java.net.SocketException: socket failed: EPERM (Operation not permitted)
        at java.net.Socket.createImpl(Socket.java:492)
        at java.net.Socket.connect(Socket.java:619)
        at org.postgresql.core.PGStream.<init>(PGStream.java:70)
        at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) 
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) 
        at org.postgresql.Driver.makeConnection(Driver.java:454) 
        at org.postgresql.Driver.connect(Driver.java:256) 
        at java.sql.DriverManager.getConnection(DriverManager.java:580) 
        at java.sql.DriverManager.getConnection(DriverManager.java:218) 
        at com.example.myapplication.MainActivity.start(MainActivity.kt:39) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441) 
        at android.view.View.performClick(View.java:7125) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131) 
        at android.view.View.performClickInternal(View.java:7102) 
        at android.view.View.access$3500(View.java:801) 
        at android.view.View$PerformClick.run(View.java:27336) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

after a few days of digging, i was finally able to manage a solution for my problem.经过几天的挖掘,我终于能够解决我的问题。

When you edit the android manifest, you must uninstall (manually) your app from your emulator and reinstall it.当您编辑 android manifest 时,您必须从模拟器中卸载(手动)您的应用程序并重新安装它。 It's the only way to make the changement definitive.这是使更改最终确定的唯一方法。

So, my problem was simply that... If someone in the future will be in the same situation, dear friend try my solution!所以,我的问题很简单……如果以后有人遇到同样的情况,亲爱的朋友试试我的解决方案!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 发生了一些不寻常的事情导致驱动程序失败。 Heroku postgresql 数据库 - Something unusual has occurred to cause the driver to fail. Heroku postgresql database Android Studio:编译器发生异常(1.8.0_152-release) - Android Studio: An exception has occurred in the compiler (1.8.0_152-release) Android Studio:编译器发生异常(1.8.0_242-release) - Android Studio: An exception has occurred in the compiler (1.8.0_242-release) Android GC内存碎片失败。 解决方法? - Android GC memory fragmentation fail. Workaround? Android版Facebook SDK“ MyApp发生错误。 请稍后再试” - Facebook SDK for Android “An error has occurred with MyApp. Please try again later” Android Studio问题:内部错误。 请报告给https://code.google.com/p/android/issues - Android Studio Issue: Internal Error. Please report to https://code.google.com/p/android/issues Android-Studio:错误:无法创建Java虚拟机。 发生致命异常 - Android-Studio : Error: Could not create the Java Virtual Machine. A fatal Exception Occurred Android Studio错误:将字节码转换为dex时出错:原因:java.lang.RuntimeException:异常解析类 - Android Studio Error:Error converting bytecode to dex: Cause: java.lang.RuntimeException: Exception parsing classes Android Studio连接错误 - Android studio connection error 异常的Android错误 - Unusual Android error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM