提问人:nothin7 提问时间:10/10/2023 最后编辑:nothin7 更新时间:10/10/2023 访问量:41
将我的 Android 应用程序连接到 MySQL 时出现问题
There is a problem connecting my Android application to MySQL
问:
我是创建 Android 应用程序的新手,我用 Kotlin 编写代码,我需要您的帮助。
我想将我的 Android 应用程序连接到位于 MySQl 计算机上的本地服务器。我已经写了代码,并认为它会百分之百工作,但没有任何效果。例如,我需要,我的用户可以注册并将此数据发送到服务器,然后我可以使用此数据轻松登录此帐户。
我已经有一个网站,它已经连接到这个本地服务器和数据库,一切正常。
这是文件“Dbhelper”
package com.example.myapplication
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
class Dbhelper(private val url: String, private val user:
String, private val password: String) {
init {
try {
Class.forName("com.mysql.cj.jdbc.Driver")
} catch (e: ClassNotFoundException) {
e.printStackTrace()
}
}
fun connect(): Connection? {
try {
return DriverManager.getConnection(url, user, password)
} catch (e: SQLException) {
e.printStackTrace()
}
return null
}
fun isUserExists(login: String, email: String): Boolean {
connect()?.use { connection ->
val query = "SELECT * FROM appmovie_users WHERE login = ? OR email = ?"
val preparedStatement = connection.prepareStatement(query)
preparedStatement.setString(1, login)
preparedStatement.setString(2, email)
val resultSet: ResultSet = preparedStatement.executeQuery()
return resultSet.next()
}
return false
}
fun addUser(login: String, email: String, password: String): Boolean {
connect()?.use { connection ->
val query = "INSERT INTO appmovie_users (login, email, password) VALUES (?, ?, ?)"
val preparedStatement = connection.prepareStatement(query)
preparedStatement.setString(1, login)
preparedStatement.setString(2, email)
preparedStatement.setString(3, password)
val rowsAffected = preparedStatement.executeUpdate()
return rowsAffected > 0
}
return false
}
}
这是文件“RegistrationActivity.kt”
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
class RegistrationActivity : AppCompatActivity() {
private lateinit var viewModel: RegistrationViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.registration)
val userLogin = findViewById<EditText>(R.id.user_login)
val userEmail = findViewById<EditText>(R.id.user_email)
val userPass = findViewById<EditText>(R.id.user_pass)
val button = findViewById<Button>(R.id.button_reg)
val linkToAuth = findViewById<TextView>(R.id.link_to_auth)
val logoName = findViewById<TextView>(R.id.logoName)
val dbUrl = "jdbc:mysql://localhost:3306/database-users-movieapp"
val dbUser = "root"
val dbPassword = ""
val dbHelper = Dbhelper(dbUrl, dbUser, dbPassword)
viewModel = ViewModelProvider(this)[RegistrationViewModel::class.java]
button.setOnClickListener {
val login = userLogin.text.toString().trim()
val email = userEmail.text.toString().trim()
val pass = userPass.text.toString().trim()
if (login == "" || email == "" || pass == "") {
Toast.makeText(this, "Not all fields are filled", Toast.LENGTH_LONG).show()
} else {
if (dbHelper.isUserExists(login, email)) {
Toast.makeText(this, "User with the same login or email already exists", Toast.LENGTH_LONG).show()
} else {
viewModel.registerUser(login, email, pass)
}
}
}
}
} 这是文件“RegistrationViewModel”
package com.example.myapplication
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class RegistrationViewModel : ViewModel() {
private val DB_URL = "jdbc:mysql://localhost:3306/database-
users-movieapp"
private val DB_USER = "root"
private val DB_PASSWORD = ""
private val databaseHelper = Dbhelper(DB_URL, DB_USER, DB_PASSWORD)
val registrationResult = MutableLiveData<Boolean>()
fun registerUser(login: String, email: String, password: String) {
viewModelScope.launch(Dispatchers.IO) {
val isRegistrationSuccessful = databaseHelper.addUser(login, email, password)
registrationResult.postValue(isRegistrationSuccessful)
}
}
}
我尝试了很多方法,但没有任何帮助,当我输入注册数据并单击按钮提交时,没有任何反应
答: 暂无答案
评论