2025.3.12(Androidstudio连接数据库)

今天要连接数据库,但是耽搁了好几天都没有成功,显示的是
就很烦,所以我今天就专注解决这个问题(mysql远程连接的创建),参考csdn的https://blog.csdn.net/m0_48958478/article/details/121704034这个链接,只要给root的密码改一下就可以解决
注意:!!!!!!!!!我的root的密码已经修改了,以后一定要记得用新密码。
下面是我的注册登录注销app的基本流程:
我的文件路径大概是这样的:

创建好空项目sync之后,在app下创建一个文件夹libs,接下来就要导入jar包,找到文件中的mysql驱动jar包,导入libs如图:

注意:一定要是有-bin的
然后点击add as library

之后就可以在project目录那里换成Android添加java文件和桌面等配置了
jdbcHelper

点击查看代码
package com.example.login.helper;

import com.mysql.jdbc.Connection;

import java.sql.DriverManager;
import java.sql.SQLException;

public class jdbcHelper {
    // MySql数据库的MySQL 数据库的连接 URL,包括主机名、端口号和数据库名称。
    static String url = "jdbc:mysql://我的计算机端口号:3306/login";
    // MySql数据库的用户名。
    static String name = "root";
    // MySQL 数据库的密码。
    static String psw = "我的密码";
    public static Connection getCon() {
        Connection con = null;
        try {
            // 加载 MySQL JDBC 驱动程序。
            Class.forName("com.mysql.jdbc.Driver");
            // 使用 DriverManager.getConnection 方法尝试建立与 MySQL 数据库的连接
            con = (Connection) DriverManager.getConnection(url,name,psw);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
}
MainActivity(登录主界面)
点击查看代码
package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.login.helper.jdbcHelper;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity extends AppCompatActivity {
    EditText uname,upsw;
    TextView zc,zx;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        uname = findViewById(R.id.uname);
        upsw = findViewById(R.id.upsw);
        zc = findViewById(R.id.zc);
        zx = findViewById(R.id.zx);
        btn = findViewById(R.id.login);
        // 登录按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 开启一个新线程来执行登录操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 获取到 MySQL 数据库的连接
                        Connection con = jdbcHelper.getCon();
                        // 准备一个 SQL 查询语句来检查用户凭据
                        String sqlStr = "select * from userinfo where uname=? and psw=?";
                        try {
                            // 创建一个 PreparedStatement 对象
                            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sqlStr);
                            // 设置查询参数
                            ps.setString(1,uname.getText().toString());
                            ps.setString(2,upsw.getText().toString());
                            // 进行查询
                            ResultSet rs = ps.executeQuery();
                            // 使用 Looper 来更新 UI
                            Looper.prepare();
                            // 判断查询结果是否存在
                            if(rs.next()) {
                                Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
                            }
                            // 结束 Looper
                            Looper.loop();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
        // 跳转到注册页面按钮点击事件
        zc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,MainActivity2.class);
                startActivity(intent);
            }
        });
        // 跳转到注销页面按钮点击事件
        zx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,MainActivity3.class);
                startActivity(intent);
            }
        });
    }
}
activity_main.xml(主页面)
点击查看代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:text="登录"
        android:textStyle="bold"
        android:layout_gravity="center"></TextView>
    <EditText
        android:id="@+id/uname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:paddingLeft="10dp"></EditText>
    <EditText
        android:id="@+id/upsw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:paddingLeft="10dp"></EditText>
    <Button
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"></Button>
    <TextView
        android:id="@+id/zc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="注册"
        android:textSize="17sp"
        android:layout_gravity="center"></TextView>
    <TextView
        android:id="@+id/zx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="注销"
        android:textSize="17sp"
        android:layout_gravity="center"></TextView>
</LinearLayout>
MainActivity2(注册的java文件)
点击查看代码
package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.login.helper.jdbcHelper;
import com.mysql.jdbc.PreparedStatement;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity2 extends AppCompatActivity {
    EditText uname,upsw;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        uname = findViewById(R.id.uname);
        upsw = findViewById(R.id.upsw);
        btn = findViewById(R.id.login);
        // 注册按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 开启一个新线程来执行注册操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 获取到 MySQL 数据库的连接
                        Connection con = jdbcHelper.getCon();
                        // 准备一个 SQL 查询语句来检查用户凭据
                        String sqlStr = "select * from userinfo where uname=?";
                        try {
                            // 创建一个 PreparedStatement 对象
                            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sqlStr);
                            // 设置查询参数
                            ps.setString(1,uname.getText().toString());
                            // 进行查询
                            ResultSet rs = ps.executeQuery();
                            // 使用 Looper 来更新 UI
                            Looper.prepare();
                            // 判断查询结果是否存在
                            if(rs.next()) {
                                // 用户名已存在
                                Toast.makeText(MainActivity2.this,"用户名已存在",Toast.LENGTH_SHORT).show();
                            } else {
                                // 注册
                                String sqlStr1 = "insert into userinfo(uname,psw) values(?,?)";
                                try {
                                    // 创建一个新的 PreparedStatement 对象
                                    PreparedStatement ps1 = (PreparedStatement) con.prepareStatement(sqlStr1);
                                    // 设置插入参数
                                    ps1.setString(1,uname.getText().toString());
                                    ps1.setString(2,upsw.getText().toString());
                                    // 执行插入操作
                                    int rows = ps1.executeUpdate();
                                    // 判断插入是否成功
                                    if(rows > 0) {
                                        // 更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity2.this,"注册成功",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    }
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                            // 结束 Looper
                            Looper.loop();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}
activity_main2.xml(注册界面)
点击查看代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:text="注册"
        android:textStyle="bold"
        android:layout_gravity="center"></TextView>
    <EditText
        android:id="@+id/uname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:paddingLeft="10dp"></EditText>
    <EditText
        android:id="@+id/upsw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:paddingLeft="10dp"></EditText>
    <Button
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"></Button>
</LinearLayout>
MainActivity3(注销的java文件)
点击查看代码
package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.login.helper.jdbcHelper;
import com.mysql.jdbc.PreparedStatement;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity3 extends AppCompatActivity {
    EditText uname,upsw;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        uname = findViewById(R.id.uname);
        upsw = findViewById(R.id.upsw);
        btn = findViewById(R.id.login);

        // 注销按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 开启一个新线程来执行注销操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 获取到 MySQL 数据库的连接
                        Connection con = jdbcHelper.getCon();
                        // 准备一个 SQL 查询语句来检查用户凭据
                        String sqlStr = "select * from userinfo where uname=? and psw=?";
                        try {
                            // 创建一个 PreparedStatement 对象
                            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sqlStr);
                            // 设置查询参数
                            ps.setString(1,uname.getText().toString());
                            ps.setString(2,upsw.getText().toString());
                            // 进行查询
                            ResultSet rs = ps.executeQuery();
                            // 使用 Looper 来更新 UI
                            Looper.prepare();
                            // 判断查询结果是否存在
                            if(rs.next()) {
                                // 用户存在,执行注销操作
                                String sqlStr1 = "delete from userinfo where uname=?";
                                try {
                                    // 创建一个 PreparedStatement 对象来执行注销操作
                                    PreparedStatement ps1 = (PreparedStatement) con.prepareStatement(sqlStr1);
                                    // 设置注销参数
                                    ps1.setString(1,uname.getText().toString());
                                    // 执行注销操作
                                    int rows = ps1.executeUpdate();

                                    // 判断注销是否成功
                                    if(rows > 0) {
                                        // 注销成功,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销成功",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    } else {
                                        // 注销失败,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销失败",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    }
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                // 用户不存在,更新 UI
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(MainActivity3.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
                            // 结束 Looper
                            Looper.loop();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}
activity_main3.xml(注销的主界面)
点击查看代码
package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.login.helper.jdbcHelper;
import com.mysql.jdbc.PreparedStatement;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity3 extends AppCompatActivity {
    EditText uname,upsw;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        uname = findViewById(R.id.uname);
        upsw = findViewById(R.id.upsw);
        btn = findViewById(R.id.login);

        // 注销按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 开启一个新线程来执行注销操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 获取到 MySQL 数据库的连接
                        Connection con = jdbcHelper.getCon();
                        // 准备一个 SQL 查询语句来检查用户凭据
                        String sqlStr = "select * from userinfo where uname=? and psw=?";
                        try {
                            // 创建一个 PreparedStatement 对象
                            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sqlStr);
                            // 设置查询参数
                            ps.setString(1,uname.getText().toString());
                            ps.setString(2,upsw.getText().toString());
                            // 进行查询
                            ResultSet rs = ps.executeQuery();
                            // 使用 Looper 来更新 UI
                            Looper.prepare();
                            // 判断查询结果是否存在
                            if(rs.next()) {
                                // 用户存在,执行注销操作
                                String sqlStr1 = "delete from userinfo where uname=?";
                                try {
                                    // 创建一个 PreparedStatement 对象来执行注销操作
                                    PreparedStatement ps1 = (PreparedStatement) con.prepareStatement(sqlStr1);
                                    // 设置注销参数
                                    ps1.setString(1,uname.getText().toString());
                                    // 执行注销操作
                                    int rows = ps1.executeUpdate();

                                    // 判断注销是否成功
                                    if(rows > 0) {
                                        // 注销成功,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销成功",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    } else {
                                        // 注销失败,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销失败",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    }
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                // 用户不存在,更新 UI
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(MainActivity3.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
                            // 结束 Looper
                            Looper.loop();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}
AndroidManifest.xml(一定不要忘记在这里注册新添加的文件)
点击查看代码
package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.login.helper.jdbcHelper;
import com.mysql.jdbc.PreparedStatement;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity3 extends AppCompatActivity {
    EditText uname,upsw;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        uname = findViewById(R.id.uname);
        upsw = findViewById(R.id.upsw);
        btn = findViewById(R.id.login);

        // 注销按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 开启一个新线程来执行注销操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 获取到 MySQL 数据库的连接
                        Connection con = jdbcHelper.getCon();
                        // 准备一个 SQL 查询语句来检查用户凭据
                        String sqlStr = "select * from userinfo where uname=? and psw=?";
                        try {
                            // 创建一个 PreparedStatement 对象
                            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sqlStr);
                            // 设置查询参数
                            ps.setString(1,uname.getText().toString());
                            ps.setString(2,upsw.getText().toString());
                            // 进行查询
                            ResultSet rs = ps.executeQuery();
                            // 使用 Looper 来更新 UI
                            Looper.prepare();
                            // 判断查询结果是否存在
                            if(rs.next()) {
                                // 用户存在,执行注销操作
                                String sqlStr1 = "delete from userinfo where uname=?";
                                try {
                                    // 创建一个 PreparedStatement 对象来执行注销操作
                                    PreparedStatement ps1 = (PreparedStatement) con.prepareStatement(sqlStr1);
                                    // 设置注销参数
                                    ps1.setString(1,uname.getText().toString());
                                    // 执行注销操作
                                    int rows = ps1.executeUpdate();

                                    // 判断注销是否成功
                                    if(rows > 0) {
                                        // 注销成功,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销成功",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    } else {
                                        // 注销失败,更新 UI
                                        runOnUiThread(new Runnable() {
                                            @Override
                                            public void run() {
                                                Toast.makeText(MainActivity3.this,"注销失败",Toast.LENGTH_SHORT).show();
                                            }
                                        });
                                    }
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                // 用户不存在,更新 UI
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(MainActivity3.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
                            // 结束 Looper
                            Looper.loop();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}
posted on 2025-03-12 23:00  睡觉时候不困  阅读(27)  评论(0)    收藏  举报