DatabaseConnection.kt
import java.sql.Connection
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
class DatabaseConnection {
fun validateUser(username: String, password: String): Boolean {
var connection: Connection? = null
var preparedStatement: PreparedStatement? = null
var result: ResultSet? = null
var isValid = false
val url = "jdbc:mysql://x.x.x.x:3306/IOT"
val uname = "****"
val pass = "****"
try {
connection = DriverManager.getConnection(url, uname, pass)
val query = "SELECT * FROM user WHERE username = ? AND password = ?"
preparedStatement = connection.prepareStatement(query)
preparedStatement.setString(1, username)
preparedStatement.setString(2, password)
result = preparedStatement.executeQuery()
if (result.next()) {
isValid = true
} else {
println("Query result: User not found") // Debug statement
}
} catch (e: Exception) {
println("error in establishing connection: $e")
}
return isValid
}
}
main.kt
import com.example.iot1.DatabaseConnection
fun main() {
val data = DatabaseConnection()
val uname = "lokesh"
val pass = "1234"
val database = data.validateUser(uname, pass)
println(database)
}
MainActivity.kt
import android.os.Bundle
import android.os.StrictMode
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import main
import java.sql.Connection
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
class MainActivity : AppCompatActivity() {
lateinit var button: Button
lateinit var etUsername: EditText
lateinit var etPassword: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
try {
val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
} catch (e: Exception) {
Log.e("MainActivity", "Error setting StrictMode policy", e)
}
setContentView(R.layout.activity_main)
button = findViewById(R.id.btn_submitted)
etUsername = findViewById(R.id.etUserId)
etPassword = findViewById(R.id.etPassword)
button.setOnClickListener {
val username = etUsername.text.toString()
val password = etPassword.text.toString()
println("username: $username and password: $password")
val database = DatabaseConnection().validateUser(username, password)
Log.d("xyzabc", "message: $database")
if (database) {
Toast.makeText(this, "Valid", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this, "Invalid", Toast.LENGTH_LONG).show()
}
}
}
}
I connected to MySQL server using a function ValidateUser
from DatabaseConnection.kt class. When I called this function into seperate main.kt file the output is giving true
but when I tried to call the same function into MainActivity using the above code the app is crashing in one scenario or getting the toast as invalid
, which is because the return from DatabaseConnection is false
.
lokesh peddamalla is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.