引自免费微信小程序:皆我百晓生
针对你遇到的问题,Android Studio中通过Java代码直连MySQL数据库并获取用户信息时无法成功获取用户的情况,有以下几种可能的解决方案和检查点:
-
检查数据库连接:
确保JDBCUtils.getConn()
方法能够正确建立到MySQL数据库的连接。请确认数据库URL、用户名、密码等配置信息无误。
-
SQL查询语句与参数:
你的SQL查询语句是正确的,但请确保数据库中的userAccount
字段名与实际字段名一致,同时检查传入的account
值是否存在对应的记录。
-
ResultSet处理:
在读取结果集时,如果数据库中没有找到匹配的记录,则resultSet.next()
将返回false,不会进入循环初始化User对象。因此,在查询无结果的情况下会返回null。为了调试,请在查询执行后加入如下判断以确认是否有数据返回:
if (resultSet != null) {
if (resultSet.next()) {
// 初始化User对象...
} else {
Log.e("getUserByAccount", "未找到对应账户信息");
}
} else {
Log.e("getUserByAccount", "ResultSet为null,查询可能失败");
}
- 多线程更新UI问题:
虽然这不是导致无法获取用户信息的原因,但在Android中,直接在非主线程(如新创建的Thread)中更新UI是不允许的。你需要使用Handler或者
runOnUiThread()
方法切换回主线程进行UI更新。修改show()
方法如下:
public void show(View view){
Intent intent = getIntent();
String message = intent.getStringExtra(LoginActivity.TAG);
UserDao userDao = new UserDao();
User user = userDao.getUserByAccount(message);
new Thread(){
@Override
public void run(){
final User resultUser = user;
if (resultUser != null) {
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView textView = findViewById(R.id.text01);
textView.setText(resultUser.getUserName());
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e("MAINACCCCCC","空空空空空");
}
});
}
}
}.start();
}
- 异常处理:
请务必在catch块中添加更详细的错误日志输出,以便定位问题所在:
catch (Exception e) {
Log.e("getUserByAccount", "查询用户信息发生错误: ", e);
e.printStackTrace();
}
- 数据库权限验证:
确认数据库连接时使用的账号具有查询指定表的权限。
以上是对可能出现问题的分析及改进措施,根据这些指导排查代码应该能帮助你解决问题。