Android——连接MySQL(Java版)
一、JDBC
1、什么是JDBC
JDBC全称Java Database Connectivity,译为Java语言连接数据库,是sun公司制定的一个接口。不同的数据库都有对应JDBC的jar包用于驱动数据库。
2、载入JDBC
在Android开发中,是以Gradle创建项目,添加JDBC关于MySQL的接口,在项目文件(app目录)下找到build.gradle文件,在dependencies添加语句
implementation 'mysql:mysql-connector-java:5.1.25'
冒号后为MySQL客户端的版本,添加后环境会自动安装。
3、创建JDBC的工具类
在项目文件中新建DBHelper类,添加Driver和数据库密码等信息,然后通过JDBC接口发送至数据库。
public class DBHelper {
private static String diver = "com.mysql.jdbc.Driver";
//加入utf-8是为了后面往表中输入中文,表中不会出现乱码的情况
private static String url = "jdbc:mysql://地址:端口/用户名?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=FALSE&autoReconnect=true&failOverReadOnly=false";
private static String user = "";//用户名
private static String password = "";//密码
public static Connection getConn() {
Connection conn = null;
try {
Class.forName(diver);
conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
根据MySQL不同的版本,MySQL8.0中Driver的应该为com.mysql.cj.jdbc.Driver
二、使用数据库
在项目中实例化工具类创建连接
Connection conn = null;
conn=(Connection)DBHelper.getConn();
实例化Statement类用于将命令发送到数据库中
Statement statement=null;
statement=conn.createStatement();
创建SQL语句
String SQL="select * from 表名 where 变量名='"+username+"';";
最后实例化ResultSet类用于接受MySQL返回的信息
ResultSet resultSet=statement.executeQuery(SQL);
当数据库返回为大量数据时使用while循环读取
while (resultSet.next()){
String sql_password=resultSet.getString("password");
String user_type=resultSet.getString("type");
}
注意的是在使用statement对象时,要使用try-catch方法,以下是获取输入的账号密码对比数据库内数据的完整代码
public void login(View v){
new Thread(new Runnable() {
@Override
public void run() {
EditText editText_username=(EditText) findViewById(R.id.phone_num);
EditText editText_password=(EditText)findViewById(R.id.psw);
String username=editText_username.getText().toString();
String t_password=editText_password.getText().toString();
Connection conn = null;
conn=(Connection)DBHelper.getConn();
Statement statement=null;
try {
statement=conn.createStatement();
String SQL="select * from user where username='"+username+"';";
System.out.println(SQL);
ResultSet resultSet=statement.executeQuery(SQL);
boolean change=false;
while (resultSet.next()){
String sql_password=resultSet.getString("password");
String user_type=resultSet.getString("type");
System.out.println(sql_password);
if(t_password.equals(sql_password)){
m_username=username;
m_user_type=user_type;
conn.close();
statement.close();
resultSet.close();
finish();
if (User_Status==true) {
User.instance.finish();
}
Intent intent=new Intent(context,MainActivity.class);
startActivity(intent);
}
}
if(change==false) {
Looper.prepare();
Toast.makeText(Login.this, "账号或密码错误", Toast.LENGTH_SHORT).show();
Looper.loop();
editText_username.setText("null");
editText_password.setText("null");
conn.close();
statement.close();
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}).start();
}