[Android Studio] 连接MySQL数据库

1、使用环境

  • Andorid Studio
  • MySql8
  • JDBC依赖mysql-connector-java-5.1.49.jar

项目的构造截图

2、简单安卓页面编写

由于我们连接数据库,需要对数据库进行增删改查等操作,所以需要编写一个简单的页面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="安卓访问MySql数据库"
        android:textSize="20sp"
        android:textColor="#9C27B0"
        android:textStyle="bold"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/but_query_count"
        android:text="查询用户数量"
        android:textSize="20sp"
        android:textColor="#CDC3CF"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/tv_user_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户数量为:"
        android:textSize="20sp"
        android:textColor="#9C27B0"
        android:textStyle="bold"
        />
</LinearLayout>

3、编写一个连接数据库的类

我们需要编写一个连接数据库的类,可以通过Url、Driver、User、Password进行连接

package com.example.chi;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;

public class DBUtils {

    private static Connection conn=null;
    private static final String TAG = "DBUtils";
    public static int getConnection(){
        String url="jdbc:mysql://192.168.137.43:3306/zxcfruiter?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
        /*电脑的IP地址*/
        /*数据库名字*/
        String user="root1";/*数据库用户名*/
        String password="123456789";/*进入数据库的密码*/

        int count = 0;

        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url,user,password);
            String sql = "select count(*) as sl from user";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()){
                count = rs.getInt("sl");
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        return count;
    }
}

4、编写主程序

package com.example.chi;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btu_query_count;
    private TextView tv_user_count;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg){
            if(msg.what == 0){
                int count = (Integer)msg.obj;
                tv_user_count.setText("用户数据库中的用户数量为:"+count);
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DBUtils.getConnection();
        initView();
    }
    
    private void initView(){
        btu_query_count = findViewById(R.id.but_query_count);
        tv_user_count = findViewById(R.id.tv_user_count);
        btu_query_count.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.but_query_count:  //查询数量。执行查询
                doQueryCount();
                break;
        }
    }


    //执行查询数量的方法
    private void doQueryCount(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                int count = DBUtils.getConnection();
                Message msg = Message.obtain();
                msg.what = 0;
                msg.obj = count;
                //向主线程发送数据
                handler.sendMessage(msg);

            }
        }).start();
    }

}

运行环境,可以直接进行查询

查询结果演示

 在这里我们没有明确的抽取出某个类为连接数据库的类,某个类是编写SQL语句的类,如果有需要,后面可以通过这个项目进行修改,抽取即可。

如果报错,有可能是JAR包的版本与MySQL数据库的版本不符合引起的

注意

  • 要注意数据库的密码与账号是正确
  • 要注意数据库账号的权限是否有权限
  • 要注意IP地址的设置,因为我们使用手机端运行程序,属于远程访问,所以不能使用127.0.0.1或localhost,需要使用具体的IP地址。

猜你喜欢

转载自blog.csdn.net/zhou_ge1/article/details/124426282