一,准备工作
1.下载mysql-connector-java
2.在Android Manifest.xml中配置添加
<uses-permission android:name="android.permission.INTERNET" />
3. Mysql开启远程连接
参考这篇:
4.在数据库创建表添加数据(这里比较简单的添加)
二、编写Android Studio的java类和xml布局文件
1.在Android Studio当中创建JDBCUtils类
package com.example.login_test;
import android.util.Log;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCUtils {
private static String driver = "com.mysql.jdbc.Driver";// MySql驱动
//xxx.xxx.xxx.xxx为我电脑的ip,这里要用自己电脑的ip,login为我电脑的数据库名,也要换。
private static String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/login?serverTimezone=UTC";
private static String user = "root";// 用户名
private static String password = "abc123";// 密码
public static Connection getConn() {
//开启连接数据库
Log.d("test", "开启连接数据库。。。。。");
Connection connection = null;
try{
Class.forName(driver);// 动态加载类
connection = DriverManager.getConnection(url, user, password); // 尝试建立到给定数据库URL的连接
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
public static void close(Connection conn){//关闭数据库连接
Log.d("test", "关闭数据库连接。。。。");
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.创建User类(这里我写的比较简单,大家有要求可以添加)
package com.example.login_test;
public class User {//用户类
String user_name;
String user_password;
public User() {
}
public User(String user_name, String password) {
this.user_name = user_name;
this.user_password = password;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getPassword() {
return user_password;
}
public void setPassword(String user_password) {
this.user_password = user_password;
}
}
3.创建dao层和UserDao
package com.example.login_test;
import android.util.Log;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class UserDao {
public boolean login(String username, String password) {//判断是否登录成功
Log.d("test", "开始成功。。。。。");
String sql = "select * from user where username = ? and password = ?";//sql语句
Connection con = JDBCUtils.getConn();//连接数据库
try {
PreparedStatement pst = con.prepareStatement(sql);//调用数据库连接对象con的方法prepareStatement获取SQL语句的预编译对
pst.setString(1, username);//调用pst的方法setXXX设置?占位
pst.setString(2, password);
if (pst.executeQuery().next()) {//查数据用executeQuery() 返回的是一个集合,如果有数据就返回true
Log.d("test", "登录成功");
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(con);//关闭数据库
}
Log.d("test", "登录失败");
return false;
}
public boolean register(User user) {//注册用户密码
Log.d("test", "开始注册。。。。。");
String sql = "insert into user(username,password) values (?,?)";//sql语句
Connection con = JDBCUtils.getConn();//连接数据库
try {
PreparedStatement pst = con.prepareStatement(sql);//调用数据库连接对象con的方法prepareStatement获取SQL语句的预编译对
pst.setString(1, user.getUser_name());//调用pst的方法setXXX设置?占位
pst.setString(2, user.getPassword());
int value = pst.executeUpdate();//executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)
if (value > 0) {
Log.d("test", "register: 注册成功");
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(con);
}
Log.d("test", "register: 注册失败");
return false;
}
public User findUser(String username) {//查询用户名
String sql = "select * from user where username = ?";
Connection con = JDBCUtils.getConn();//连接数据库
User user = null;
try {
PreparedStatement pst = con.prepareStatement(sql);//调用数据库连接对象con的方法prepareStatement获取SQL语句的预编译对
pst.setString(1, username); // 调用pst的方法setXXX设置?占位
ResultSet rs = pst.executeQuery();//查数据用executeQuery() 返回的是一个集合,如果有数据就返回true
while (rs.next()) {//.next()表示 指针先下一行,如果有数据就返回true
String name = rs.getString(1);//获取查询到的账号密码
String password = rs.getString(2);
user = new User(name, password);//传给user对象
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(con);
}
return user;//传入成功返回账号密码,失败则为null
}
public int update(String name,String password) {
String sql = "update user set password=? where username=?";
Connection con = JDBCUtils.getConn();//连接数据库
int i = 0;
Log.d("test", "开始修改。