Android登录MySQL数据库
在Android应用中实现用户认证功能,如登录、注册和注销,是提升用户体验和数据安全的重要步骤,本文将详细介绍如何在Android Studio中使用MySQL数据库来实现这些功能,并提供相关的代码示例,以下是具体步骤:
一、准备工作
1. 安装MySQL数据库
Windows:下载并运行MySQL安装包。
macOS:下载并运行dmg安装包。
Linux:使用软件包管理器安装,例如sudo apt-get install mysql-server
。
2. 配置MySQL用户权限
打开MySQL控制台,执行以下命令以允许远程连接:
USE mysql; UPDATE user SET host = '%' WHERE user = 'root'; FLUSH PRIVILEGES;
3. 创建数据库和表
使用Navicat或其他工具连接到MySQL,创建数据库和用户表。
CREATE DATABASE login; USE login; CREATE TABLE userinfo ( uname VARCHAR(20), psw VARCHAR(20) );
二、Android Studio配置
1. 添加MySQL依赖项
在项目的build.gradle
文件中添加MySQL连接器依赖:
dependencies { implementation 'mysql:mysql-connector-java:8.0.23' }
2. 添加网络权限
在AndroidManifest.xml
中添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET" />
3. 创建数据库连接辅助类
创建一个名为DatabaseHelper.java
的类,用于管理数据库连接:
package com.example.myapplication; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseHelper { private static final String URL = "jdbc:mysql://192.000.111.222:3306/login"; // 替换为你的数据库地址 private static final String USER = "root"; private static final String PASSWORD = "your_password"; // 替换为你的数据库密码 public static Connection getConnection() { Connection connection = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return connection; } }
三、实现登录功能
1. 创建登录界面布局
在res/layout/activity_login.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="16dp"> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="用户名" /> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密码" android:inputType="textPassword" /> <Button android:id="@+id/loginButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /> </LinearLayout>
2. 编写登录逻辑
在MainActivity.java
中实现登录逻辑:
package com.example.myapplication; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MainActivity extends AppCompatActivity { private EditText usernameEditText; private EditText passwordEditText; private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); usernameEditText = findViewById(R.id.username); passwordEditText = findViewById(R.id.password); loginButton = findViewById(R.id.loginButton); loginButton.setOnClickListener(v -> { String username = usernameEditText.getText().toString(); String password = passwordEditText.getText().toString(); login(username, password); }); } private void login(String username, String password) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = DatabaseHelper.getConnection(); String sql = "SELECT * FROM userinfo WHERE uname = ? AND psw = ?"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, username); preparedStatement.setString(2, password); resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); // 在这里可以跳转到主界面或执行其他操作 } else { Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); } } catch (SQLException e) { e.printStackTrace(); Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show(); } finally { try { if (resultSet != null) resultSet.close(); if (preparedStatement != null) preparedStatement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
四、实现注册功能
1. 创建注册界面布局
在res/layout/activity_register.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="16dp"> <EditText android:id="@+id/regUsername" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="用户名" /> <EditText android:id="@+id/regPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密码" android:inputType="textPassword" /> <Button android:id="@+id/registerButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册" /> </LinearLayout>
2. 编写注册逻辑
在RegisterActivity.java
中实现注册逻辑:
package com.example.myapplication; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class RegisterActivity extends AppCompatActivity { private EditText regUsernameEditText; private EditText regPasswordEditText; private Button registerButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); regUsernameEditText = findViewById(R.id.regUsername); regPasswordEditText = findViewById(R.id.regPassword); registerButton = findViewById(R.id.registerButton); registerButton.setOnClickListener(v -> { String username = regUsernameEditText.getText().toString(); String password = regPasswordEditText.getText().toString(); register(username, password); }); } private void register(String username, String password) { Connection connection = null; PreparedStatement preparedStatement = null; try { connection = DatabaseHelper.getConnection(); String sql = "INSERT INTO userinfo (uname, psw) VALUES (?, ?)"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, username); preparedStatement.setString(2, password); int result = preparedStatement.executeUpdate(); if (result > 0) { Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show(); // 在这里可以跳转到登录界面或执行其他操作 } else { Toast.makeText(this, "注册失败", Toast.LENGTH_SHORT).show(); } } catch (SQLException e) { e.printStackTrace(); Toast.makeText(this, "注册失败", Toast.LENGTH_SHORT).show(); } finally { try { if (preparedStatement != null) preparedStatement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
通过上述步骤,您可以在Android应用中实现基本的登录和注册功能,并与MySQL数据库进行交互,这些代码示例提供了一个基础框架,您可以根据实际需求进行扩展和优化。
各位小伙伴们,我刚刚为大家分享了有关“android登录mysql数据库”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/636271.html