'E/Error: Login failed for user 'adminname'. E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1

I was trying to create the register function that will be linking from the Android Studio to the Microsoft SQL Server, but when I was trying to do so, I have faced the issue stated as above. May I know how do I solve this? Below are my errors and my codes. The error occured at connection = sqlCon.connectionClass()!!

E/Error: Login failed for user 'adminname'.

E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1 Process: com.example.myapplication, PID: 7890 java.lang.NullPointerException at com.example.myapplication.RegisterActivity.registerUser$lambda-3(RegisterActivity.kt:72) at com.example.myapplication.RegisterActivity.$r8$lambda$Xx7PbACDUcq1QigSI9z47xhw7to(Unknown Source:0) at com.example.myapplication.RegisterActivity$$ExternalSyntheticLambda3.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)

`class SQLCon {

lateinit var connection : Connection
lateinit var username : String
lateinit var pass : String
lateinit var ip : String
lateinit var port : String
lateinit var database : String


@SuppressLint("NewApi")
fun connectionClass(): Connection?
{
    ip = "205.167.0.185"
    database = "Testing"
    username = "admin"
    pass = "admin123"
    port = "1433"

    val policy = ThreadPolicy.Builder().permitAll().build()
    StrictMode.setThreadPolicy(policy)
    var con: Connection? = null
    var conURL: String?

    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver")
        conURL = "jdbc:jtds:sqlserver://$ip:$port;databasename=$database;user=${username}name;password=$pass;"
        con = DriverManager.getConnection(conURL)
    } catch (e: Exception) {
        Log.e("Error", e.message!!)

    }

    return con

}

}`

class RegisterActivity  : AppCompatActivity (){
lateinit var regUsername : EditText
lateinit var regEmail : EditText
lateinit var regPassword : EditText
lateinit var cfmPassword : EditText
lateinit var  regPhone : EditText
lateinit var btnRegAcc : Button
lateinit var btnBack : Button
lateinit var connection : Connection
lateinit var statement : Statement
//lateinit var sqlCon: SQLCon

private val myExecutor = Executors.newSingleThreadExecutor()
private val myHandler = Handler(Looper.getMainLooper())


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

    regUsername = findViewById(R.id.regUsername)
    regEmail = findViewById(R.id.regEmail)
    regPassword = findViewById(R.id.regPassword)
    cfmPassword = findViewById(R.id.cfmPassword)
    regPhone = findViewById(R.id.regPhone)
    btnRegAcc = findViewById(R.id.btnRegAcc)
    btnBack = findViewById(R.id.btnBack)

    Toast.makeText(this,"Register Page", Toast.LENGTH_SHORT).show()


    btnRegAcc.setOnClickListener {
        registerUser()

    }

    btnBack.setOnClickListener{
        val intent = Intent(this, LoginActivity::class.java)
        startActivity(intent)
    }

}

fun registerUser()
{
    myExecutor.execute {
        validateUsername()
        validatePhone()
        validateEmail()
        validatePhone()
        if (validateUsername() == true && validateEmail() == true && validatePhone() == true && validatePassword() == true){
            //Toast.makeText(this, "Creating account...", Toast.LENGTH_LONG).show()
            val sqlCon = SQLCon()
            connection = sqlCon.connectionClass()!!
            if(connection != null)
            {
                //var sql : String = "INSERT into Account (Username, Email, Password,Phone) VALUES into
                var sql :String  =
                    "INSERT INTO register (Username,Pass,Email,Phone) VALUES ('" + regUsername.text.toString() + "'" +
                            ",'" + regPassword.text.toString() + "'" +
                            ",'" + regEmail.text.toString() + "'" +
                            ",'" + regPhone.text.toString() + "')"
                statement = connection.createStatement();
                statement.executeUpdate(sql)


            }
            else {
                //Toast.makeText(this, "Failed to make connection", Toast.LENGTH_LONG).show()
            }

            myHandler.post {
                Toast.makeText(this, "Creating account...", Toast.LENGTH_LONG).show()
            }


        }
    }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source