当前位置:   article > 正文

关于Android Studio连接mysql数据库的过程和注册功能的实现(数据的插入)以及mysql环境变量的配置_android studio连接mysql实现登录注册

android studio连接mysql实现登录注册

1.安装mysql数据库,安装的教程哔站有很多,版本尽量用mysql5.7的版本,用mysql8.0的版本与android studio进行连接的话可能会出现问题。

2.安装完成之后,给本机配置环境变量,步骤:如下图示

(1)通过搜索打开环境变量。

(2).点击环境变量。

(3).找到系统变量点击新建。

(4).点击新建之后输入如下内容,切记变量值是你的mysql安装路径。

(5).找到path路径点击进入。

(6).新建一个关于mysql的环境变量,配置完后全部确定。

(7).进行验证mysql数据库是否安装成功。按住电脑win+R输入cmd命令进入终端

输入 mysql -uroot -p 命令,然后需要让你输入你在安装mysql是设置的密码,点击回车,

如果显示如下图这样,说明数据库安装完成,配置成功。

3.下载JDBC驱动包在mysql官网下载进行,版本同样不要太高,用5.14版本的jdbc驱动可以满足mysql5.7的版本。下载完城之后解压,找到如下图文件并进行复制。

4.将复制的文件粘贴到android studio中的libs夹文件中,点击粘贴好的文件右击显示第二张图的样子,再点击Add as Library...等待加载完成之后,出现第三张图则表示你导入成功。

5.在android studio项目里创建一个JDBCUtil类,UserDaol类,MainActivity类以及布局文件activity_main.xml。(注意:数据库连接好之后需要创建一个新的用户并且授予所有权,同时还要新建一个数据库dictionary以及在此数据库下新建一个用户表user才可以使用以下代码,否则可能会出现问题。)

JDBCUtil类:

( private static final String URL = "jdbc:mysql://XXX.XXX.XXX.XXX:3306/dictionary?useUnicode=true&characterEncoding=utf-8&useSSL=false";)

此语句中的XXX.XXX.XXX.XXX代表电脑本机的ip地址,3306为端口号(一般都是这个),dictionary为mysql数据库库里面新建的一个名叫dictionary的数据库。

(private static final String USER = "XXX";)此语句中的XXX代表使用数据库的用户名。

(private static final String PWD = "XXXX";)此语句中的XXXX代表用户连接数据库的密码。

  1. import android.util.Log;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. public class JDBCUtil {
  5. private static final String CLS = "com.mysql.jdbc.Driver";
  6. private static final String URL = "jdbc:mysql://XXX.XXX.XXX.XXX:3306/dictionary?useUnicode=true&characterEncoding=utf-8&useSSL=false";
  7. private static final String USER = "XXX";
  8. private static final String PWD = "XXXX";
  9. private static Connection connection;
  10. //数据库连接
  11. public static Connection getConn(){
  12. try{
  13. Class.forName(CLS);// 动态加载类
  14. // 尝试建立到给定数据库URL的连接
  15. connection = DriverManager.getConnection(URL, USER, PWD);
  16. Log.d("Dictionary","数据库连接成功!");
  17. }catch (Exception e){
  18. e.printStackTrace();
  19. Log.d("Dictionary","数据库连接失败!");
  20. }
  21. return connection;
  22. }
  23. }

UserDao类:

  1. import android.util.Log;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. public class UserDao {
  7. private Connection connection = null;
  8. private PreparedStatement pStmt = null;
  9. private ResultSet rs = null;
  10. //插入用户信息
  11. public void insert(String name, String pwd, String phone, String status) {
  12. try {
  13. // 获取数据库连接
  14. connection = JDBCUtil.getConn();
  15. // 构造SQL语句
  16. String sql = "insert into user (name, pwd, phone,status) values (?, ?, ?, ?)";
  17. pStmt = connection.prepareStatement(sql);
  18. pStmt.setString(1, name);
  19. pStmt.setString(2, pwd);
  20. pStmt.setString(3, phone);
  21. pStmt.setString(4, status);
  22. // 执行SQL语句
  23. pStmt.executeUpdate();
  24. Log.d("Dictionary", "数据插入成功!");
  25. } catch (SQLException e) {
  26. e.printStackTrace(); // 打印异常信息
  27. Log.d("Dictionary", "数据插入失败!");
  28. } finally {
  29. try {
  30. connection.close();
  31. Log.d("Dictionary", "关闭数据库成功!");
  32. } catch (SQLException e) {
  33. e.printStackTrace();
  34. Log.d("Dictionary", "关闭数据库失败!");
  35. }
  36. }
  37. }
  38. //登录验证密码以及身份(Verify 验证)
  39. public boolean loginVerify(String name, String passWord,String status) {
  40. try {
  41. // 获取数据库连接
  42. connection = JDBCUtil.getConn();
  43. // 查询表中的密码
  44. String sql = "select pwd,status from user where name = ?";
  45. pStmt = connection.prepareStatement(sql);
  46. pStmt.setString(1, name);
  47. rs = pStmt.executeQuery();
  48. if (rs.next()) {
  49. // 比较查出的密码和传入的密码是否相同
  50. String dbPwd = rs.getString("pwd");
  51. String dbStatus =rs.getString("status");
  52. Log.d("Dictionary", dbPwd);
  53. Log.d("Dictionary", dbStatus);
  54. Log.d("Dictionary", passWord);
  55. Log.d("Dictionary", status);
  56. return (dbPwd.equals(passWord))&&(dbStatus.equals(status));
  57. } else {
  58. return false; // 没有找到对应的名字和身份,返回false表示登录失败
  59. }
  60. } catch (SQLException e) {
  61. e.printStackTrace(); // 打印异常信息
  62. Log.d("Dictionary", "异常!!!!");
  63. return false; // 发生异常,返回false表示登录失败
  64. } finally {
  65. try {
  66. connection.close();
  67. Log.d("Dictionary", "关闭数据库成功!");
  68. } catch (SQLException e) {
  69. e.printStackTrace();
  70. Log.d("Dictionary", "关闭数据库失败!");
  71. }
  72. }
  73. }
  74. }
MainActivity类:
  1. import androidx.appcompat.app.AppCompatActivity;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.EditText;
  7. import android.widget.RadioButton;
  8. import android.widget.RadioGroup;
  9. import android.widget.Toast;
  10. import java.sql.SQLException;
  11. public class MainActivity extends AppCompatActivity {
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. EditText userName = findViewById(R.id.userName);
  17. EditText passWord = findViewById(R.id.passWord);
  18. EditText phone = findViewById(R.id.phone);
  19. //按钮监听
  20. Button buttonRegister = this.findViewById(R.id.buttonRegister);
  21. buttonRegister.setOnClickListener(new View.OnClickListener(){
  22. @Override
  23. public void onClick(View view) {
  24. String name =ToolUtil.editTextToString(userName);
  25. String pwd =ToolUtil.editTextToString(passWord);
  26. String tel =ToolUtil.editTextToString(phone);
  27. String status = JudgeStatus();
  28. Insert(name,pwd, tel,status);
  29. Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
  30. }
  31. });
  32. }
  33. //获取用户输入的数据插入到mysql数据库
  34. public void Insert( String name,String pwd ,String phone,String status){
  35. UserDao userDao = new UserDao();
  36. Thread thread= new Thread(new Runnable() {
  37. @Override
  38. public void run() {
  39. userDao.insert(name, pwd, phone, status);
  40. }
  41. });
  42. thread.start();
  43. }
  44. //判断用户选择的身份
  45. public String JudgeStatus() {
  46. String status="";
  47. RadioGroup radioGroup = findViewById(R.id.radioGroup);
  48. for (int i = 0; i <radioGroup.getChildCount() ; i++) {
  49. RadioButton radioButton = (RadioButton)radioGroup.getChildAt(i);
  50. if (radioButton.isChecked()) {
  51. status = radioButton.getText().toString().trim();
  52. }
  53. }
  54. return status;
  55. }
  56. }

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. tools:context=".MainActivity">
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:layout_marginTop="80dp"
  11. android:orientation="vertical"
  12. android:padding="60dp">
  13. <TextView
  14. android:id="@+id/registerTitle"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:layout_gravity="center_horizontal"
  18. android:layout_marginBottom="50dp"
  19. android:text="用户注册"
  20. android:textColor="#4A919D"
  21. android:textSize="30dp"
  22. android:textStyle="bold" />
  23. <LinearLayout
  24. android:layout_width="match_parent"
  25. android:layout_height="wrap_content"
  26. android:orientation="vertical"
  27. android:padding="40dp">
  28. <EditText
  29. android:id="@+id/userName"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:ems="10"
  33. android:hint="用户名"
  34. android:inputType="textPersonName"
  35. android:padding="8dp"
  36. android:textSize="18dp" />
  37. <EditText
  38. android:id="@+id/passWord"
  39. android:layout_width="wrap_content"
  40. android:layout_height="wrap_content"
  41. android:layout_marginTop="15dp"
  42. android:ems="10"
  43. android:hint="密码"
  44. android:inputType="textPassword"
  45. android:padding="8dp"
  46. android:textSize="18dp" />
  47. <EditText
  48. android:id="@+id/phone"
  49. android:layout_width="wrap_content"
  50. android:layout_height="wrap_content"
  51. android:layout_marginTop="15dp"
  52. android:ems="10"
  53. android:hint="电话"
  54. android:inputType="phone"
  55. android:padding="8dp"
  56. android:textSize="18dp" />
  57. </LinearLayout>
  58. <RadioGroup
  59. android:id="@+id/radioGroup"
  60. android:layout_width="wrap_content"
  61. android:layout_height="match_parent"
  62. android:layout_gravity="center_horizontal"
  63. android:layout_marginTop="10dp"
  64. android:orientation="horizontal">
  65. <RadioButton
  66. android:id="@+id/radioButtonAdmin"
  67. android:layout_width="wrap_content"
  68. android:layout_height="wrap_content"
  69. android:layout_marginLeft="20dp"
  70. android:text="admin"
  71. android:textSize="18dp" />
  72. <RadioButton
  73. android:id="@+id/radioButtonUser"
  74. android:layout_width="wrap_content"
  75. android:layout_height="wrap_content"
  76. android:layout_marginLeft="90dp"
  77. android:text="user"
  78. android:textSize="18dp" />
  79. </RadioGroup>
  80. <LinearLayout
  81. android:layout_width="match_parent"
  82. android:layout_height="wrap_content"
  83. android:layout_marginTop="25dp"
  84. android:orientation="horizontal"
  85. android:padding="4dp">
  86. <Button
  87. android:id="@+id/buttonRegister"
  88. android:layout_width="wrap_content"
  89. android:layout_height="wrap_content"
  90. android:text="注册"
  91. android:textSize="20dp" />
  92. </LinearLayout>
  93. </LinearLayout>
  94. </RelativeLayout>

6.这个是最后的结果数据库连接完成并且成功插入数据。

最后希望能通过这篇文章给予大家一点帮助,欢迎技术大佬能给予指正,有什么问题欢迎大家积极留言。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/436260
推荐阅读
相关标签
  

闽ICP备14008679号