Android studio连接MySQL并完成简单的登录注册功能
Posted ChangYan.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android studio连接MySQL并完成简单的登录注册功能相关的知识,希望对你有一定的参考价值。
近期需要完成一个android项目,那先从与数据库交互最简单的登陆注册开始吧,现记录过程如下:
此篇文章的小demo主要涉及数据库的连接,以及相应信息的查找与插入。
我已将源码上传至GitHub:
https://github.com/changyan-maker/LoginApp
首先展示一下完成效果。
数据库设计:
数据库内容:
登录结果展示:
此处默认您已经安装好Android studio 与mysql软件。
首先需要创建一个空项目,关于空的项目如何创建,请参考我本篇文章:
https://blog.csdn.net/changyana/article/details/122948513
接下来需要连接MySQL,首先需要开启网络权限。需要添加一句话,具体位置如图:(将项目切换成Android模式比较好找)
之后是导入Mysql-connection的jar包
关于这个jar包需要我们去官网下载:https://downloads.mysql.com/archives/c-j/
关于版本的选择个人建议选择老一点的,比较稳定。选择ZIP格式进行下载。
下载完成后在里边找到mysql-connector-java-5.1.47-bin.jar并复制到粘贴板。
然后将Android studio的项目页面切换到Project模式,找到如下文件的位置进行粘贴。
粘贴完成后需要把刚才导入的jar包右击Add as Library
然后切换回Android视图,操作如下,新建一个package
然后粘贴代码如下:
本篇文章从图片可以看到我的项目名称为HelloWorld,这个项目只是我用来做测试的。但是代码是我完善后放在另一个项目为party中的,所有的位置都是一样的,只是项目名称不一样,这个不用担心。你只需要把我的代码里的包名改成你项目的名称就好了。
注意数据库的连接:要连接的数据库,还有用户名和密码都要和自己的Mysql对应。
package com.example.party.utils;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* function: 数据库工具类,连接数据库用
*/
public class JDBCUtils
private static final String TAG = "mysql-party-JDBCUtils";
private static String driver = "com.mysql.jdbc.Driver";// MySql驱动
private static String dbName = "party";// 数据库名称
private static String user = "root";// 用户名
private static String password = "";// 密码
public static Connection getConn()
Connection connection = null;
try
Class.forName(driver);// 动态加载类
String ip = "10.0.2.2";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个
// 尝试建立到给定数据库URL的连接
connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
user, password);
catch (Exception e)
e.printStackTrace();
return connection;
接着创建entity和User
位置如图,创建方法与上述创建JDBCUtils一样
代码如下:
package com.example.party.entity;
public class User
private int id;
private String userAccount;
private String userPassword;
private String userName;
private int userType;
private int userState;
private int userDel;
public User()
public User(int id, String userAccount, String userPassword, String userName, int userType, int userState, int userDel)
this.id = id;
this.userAccount = userAccount;
this.userPassword = userPassword;
this.userName = userName;
this.userType = userType;
this.userState = userState;
this.userDel = userDel;
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getUserAccount()
return userAccount;
public void setUserAccount(String userAccount)
this.userAccount = userAccount;
public String getUserPassword()
return userPassword;
public void setUserPassword(String userPassword)
this.userPassword = userPassword;
public String getUserName()
return userName;
public void setUserName(String userName)
this.userName = userName;
public int getUserType()
return userType;
public void setUserType(int userType)
this.userType = userType;
public int getUserState()
return userState;
public void setUserState(int userState)
this.userState = userState;
public int getUserDel()
return userDel;
public void setUserDel(int userDel)
this.userDel = userDel;
之后创建dao和UserDao
package com.example.party.dao;
import com.example.party.entity.User;
import com.example.party.utils.JDBCUtils;
import android.util.Log;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
/**
* author: yan
* date: 2022.02.17
* **/
public class UserDao
private static final String TAG = "mysql-party-UserDao";
/**
* function: 登录
* */
public int login(String userAccount, String userPassword)
HashMap<String, Object> map = new HashMap<>();
// 根据数据库名称,建立连接
Connection connection = JDBCUtils.getConn();
int msg = 0;
try
// mysql简单的查询语句。这里是根据user表的userAccount字段来查询某条记录
String sql = "select * from user where userAccount = ?";
if (connection != null)// connection不为null表示与数据库建立了连接
PreparedStatement ps = connection.prepareStatement(sql);
if (ps != null)
Log.e(TAG,"账号:" + userAccount);
//根据账号进行查询
ps.setString(1, userAccount);
// 执行sql查询语句并返回结果集
ResultSet rs = ps.executeQuery();
int count = rs.getMetaData().getColumnCount();
//将查到的内容储存在map里
while (rs.next())
// 注意:下标是从1开始的
for (int i = 1;i <= count;i++)
String field = rs.getMetaData().getColumnName(i);
map.put(field, rs.getString(field));
connection.close();
ps.close();
if (map.size()!=0)
StringBuilder s = new StringBuilder();
//寻找密码是否匹配
for (String key : map.keySet())
if(key.equals("userPassword"))
if(userPassword.equals(map.get(key)))
msg = 1; //密码正确
else
msg = 2; //密码错误
break;
else
Log.e(TAG, "查询结果为空");
msg = 3;
else
msg = 0;
else
msg = 0;
catch (Exception e)
e.printStackTrace();
Log.d(TAG, "异常login:" + e.getMessage());
msg = 0;
return msg;
/**
* function: 注册
* */
public boolean register(User user)
HashMap<String, Object> map = new HashMap<>();
// 根据数据库名称,建立连接
Connection connection = JDBCUtils.getConn();
try
String sql = "insert into user(userAccount,userPassword,userName,userType,userState,userDel) values (?,?,?,?,?,?)";
if (connection != null)// connection不为null表示与数据库建立了连接
PreparedStatement ps = connection.prepareStatement(sql);
if (ps != null)
//将数据插入数据库
ps.setString(1,user.getUserAccount());
ps.setString(2,user.getUserPassword());
ps.setString(3,user.getUserName());
ps.setInt(4,user.getUserType());
ps.setInt(5, user.getUserState());
ps.setInt(6,user.getUserDel());
// 执行sql查询语句并返回结果集
int rs = ps.executeUpdate();
if(rs>0)
return true;
else
return false;
else
return false;
else
return false;
catch (Exception e)
e.printStackTrace();
Log.e(TAG, "异常register:" + e.getMessage());
return false;
/**
* function: 根据账号进行查找该用户是否存在
* */
public User findUser(String userAccount)
// 根据数据库名称,建立连接
Connection connection = JDBCUtils.getConn();
User user = null;
try
String sql = "select * from user where userAccount = ?";
if (connection != null)// connection不为null表示与数据库建立了连接
PreparedStatement ps = connection.prepareStatement(sql);
if (ps != null)
ps.setString(1, userAccount);
ResultSet rs = ps.executeQuery();
while (rs.next())
//注意:下标是从1开始
int id = rs.getInt(1);
String userAccount1 = rs.getString(2);
String userPassword = rs.getString(3);
String userName = rs.getString(4);
int userType = rs.getInt(5);
int userState = rs.getInt(6);
int userDel = rs.getInt(7);
user = new User(id, userAccount1, userPassword, userName, userType, userState, userDel);
catch (Exception e)
e.printStackTrace();
Log.d(TAG, "异常findUser:" + e.getMessage());
return null;
return user;
编写登录页面
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:layout_editor_absoluteX="219dp"
tools:layout_editor_absoluteY="207dp"
android:padding="50dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="15sp"
android:text="账号:" />
<EditText
android:id="以上是关于Android studio连接MySQL并完成简单的登录注册功能的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 实现登录注册-源代码 (连接MySql数据库)
Android Studio 实现登录注册-源代码 二(Servlet + 连接MySql数据库)
Android Studio 实现登录注册-源代码 二(Servlet + 连接MySql数据库)
Android Studio使用JDBC远程连接mysql的注意事项(附示例)
Android Studio 实现实现学生信息的增删改查 -源代码 四(Servlet + 连接MySql数据库)
Android Studio 实现实现学生信息的查询 -源代码 三(Servlet + 连接MySql数据库) (JSON通信)