Android studio连接mysql数据库

这篇具有很好参考价值的文章主要介绍了Android studio连接mysql数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  用Android studio连接Navicat Premium 16管理的mysql,我安装的是mysql5.7.19版本,用的包是mysql-connector-java-5.1.49-bin.jar。
  在开始连接前请务必确保MySQL版本不是8.0及以上的版本!!否则会一直报错无法创建连接。
  jar包也尽量选择低一些的版本,高版本我没试过,据说新版不太稳定不支持也会报错。


环境配置:

一,mysql下载地址:https://downloads.mysql.com/archives/community
二,Navicat Premium 16安装地址:https://www.downkuai.com/soft/161548.html
三,mysql-connector-java-5.1.49-bin.jar下载地址:https://downloads.mysql.com/archives/c-j/


一、Android studio连接mysql数据库

1.配置Android Studio

  • 打开项目,导入jar包,将下载的jar包放入项目/app/libs内,右键,点击Add As Library。
    安卓studio连接mysql数据库,数据库,android studio,mysql

  • 配置环境,在AndroidManifest.xml中加入以下代码来获取网络访问权限。

<uses-permission android:name="android.permission.INTERNET" />

2.mysql设置权限

  • 在Navicat Premium 16中点击连接选择mysql,输入自己的mysql密码创建连接,主机或IP地址要填写自己电脑的IPv4地址,双击选中。
    不知道地址的可以cmd打开命令提示符,输入ipconfig,找到自己的iPv4地址
    安卓studio连接mysql数据库,数据库,android studio,mysql
  • 管理员权限运行命令提示符,进入mysql所在的文件夹进入mysql,输入密码登录你的账号,输入以下代码表示增加新用户,bya是用户名,123456是明文密码,%表示能够在任何机器上登陆mysql,
d:										//进入D盘
cd D:\mysql\mysql-5.7.19-winx64\bin		//进入mysql在的文件夹
mysql -u RCQ -p							//登录账号 RCQ要替换为自己的用户名
123456									//输入自己的密码
GRANT ALL PRIVILEGES ON *.* TO 'bya'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

  显示ok则表示添加成功
安卓studio连接mysql数据库,数据库,android studio,mysql

  • 在Navicat Premium 16中点击用户,新建用户,用户名和密码要和刚添加mysql用户时的用户名和密码一致,最后点击保存即可。
    安卓studio连接mysql数据库,数据库,android studio,mysql

二、在Android studio进行测试

创建表和数据

  • 在Navicat Premium 16中创建数据库demo,创建表user,再编写几个数据,因为是测试,所以我就写了四个属性。
    表结构为:
    安卓studio连接mysql数据库,数据库,android studio,mysql
    表数据为:
    安卓studio连接mysql数据库,数据库,android studio,mysql

编写代码进行测试

  • 在Android studio中编写代码进行测试
      一共要编写三个java文件:JDBCUtils,UserDao和MainActivity.java。JDBCUtils用于连接数据库,UserDao是数据库与前端交互类,MainActivity.java是应用主页面的实现代码。
      本来应该再写一个User是信息存储类的,但是因为这是简单的测试就没有写,直接在代码里定义好数据直接进行查询和插入数据
    JDBCUtils类:
package com.example.androidpractice.Utils;

import android.util.Log;
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 = "demo";// 数据库名称
    private static String user = "bya";// 用户名
    private static String password = "123456";// 密码
    public static Connection getConn(){
        Connection connection = null;
        try{
            Class.forName(driver);// 动态加载类
            String ip = "10.73.146.38";// 写成本机地址,不能写成localhost,
            // 尝试建立到给定数据库URL的连接
            connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
                    user, password);
            Log.d("ning","数据库连接成功!");
        }catch (Exception e){
            e.printStackTrace();
            Log.d("ning","数据库连接失败!");
        }
        return connection;
    }
}

UserDao.java类:

package com.example.androidpractice.dao;

import android.util.Log;
import com.example.androidpractice.Utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * author: 白易安
 * date: 2023.08.05
 * **/
public class UserDao {

    //根据传入的账号查询数据库对应的密码,再与传入的密码进行对比
    public  boolean loginup(String account, String password) {
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            // 获取数据库连接
            connection = JDBCUtils.getConn();
            Log.d("ning","账号:" + account);
            // 查询表中的密码
            String sql = "SELECT password FROM user WHERE account = ?";
            pstmt = connection.prepareStatement(sql);
            pstmt.setString(1, account);
            rs = pstmt.executeQuery();
            if (rs.next()) {
                // 比较查出的密码和传入的密码是否相同
                String dbPassword = rs.getString("password");
                Log.d("ning","密码:" + dbPassword);
                return dbPassword.equals(password);
            } else {
                return false; // 没有找到对应的账号,返回false表示登录失败
            }
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常信息
            return false; // 发生异常,返回false表示登录失败
        } finally {
            // 关闭资源
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
    //插入数据
    public  void insert(String account, String password, String name) {
        Connection connection = null;
        PreparedStatement pstmt = null;
        try {
            // 获取数据库连接
            connection = JDBCUtils.getConn();
            // 构造SQL语句
            String sql = "INSERT INTO user (account, password, name) VALUES (?, ?, ?)";
            pstmt = connection.prepareStatement(sql);
            pstmt.setString(1, account);
            pstmt.setString(2, password);
            pstmt.setString(3, name);
            // 执行SQL语句
            pstmt.executeUpdate();
            Log.d("ning","插入数据成功!");
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常信息
            Log.d("ning","插入数据失败!");
        } finally {
            // 关闭资源
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

}

MainActivity.java:

package com.example.androidpractice;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import com.example.androidpractice.dao.UserDao;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String account="17374517111";
        String password="111111";
        String account1="17374517444";
        String password1="111111444";
        String name="d";
        UserDao dao=new UserDao();
        boolean up=false;
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
            up=dao.loginup(account,password);
            dao.insert(account1,password1,name);

        }
        if (up==true){
            Log.d("ning","登录成功");
        }else {
            Log.d("ning","登录失败");
        }
    }
}

主线程不能进行网络操作问题

  • 其中刚运行是还是报错,查找了错误原因为:在主线程中执行了网络操作,这是不允许的。为了解决这个问题,你需要将网络操作放到子线程中执行。
  • 我使用了一下代码来解决这个报错:
if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

  这段代码是在Android应用中使用的,用于在Android 10(API级别29)及更高版本上启用StrictMode。StrictMode是一个用于检测应用程序中可能的内存泄漏、死锁等问题的工具。
代码解析:
  1,首先检查当前设备的Android版本是否大于9(即API级别29),因为从Android 10开始,StrictMode才默认启用。
  2,如果设备版本大于9,则创建一个StrictMode.ThreadPolicy对象,允许所有线程执行。
  3,最后,使用setThreadPolicy方法将创建的策略设置为当前线程的策略。


总结

  因为才学Android没多久,看的课程Android studio只有连接自带的sqlite没有通过网络访问mysql数据库这部分,所以自己搜索着解决了一下,最后那个解决报错的方法肯定不适用于很多情况,还需要在找一些其他方法,我问了AI说可以使用AsyncTask或者Thread来解决,但是还没有试。
  继续学习,加油!文章来源地址https://www.toymoban.com/news/detail-774929.html

到了这里,关于Android studio连接mysql数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android studio 连接SQLite数据库 +创建数据库+创建数据库表

    Android studio 之数据库的使用 连接创建SQLite 大家好,欢迎来到寒依。 相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻” 我

    2024年02月02日
    浏览(55)
  • 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

    今天我来分享一下如何使用Android Studio开发一个天气预报APP。在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上。 首先,打开Android Studio并创建一个新的项目。在创建新项目时,我们需要设置项目名称、包名和支持的最低API级别。 为了获取实时天气数据,

    2024年02月08日
    浏览(61)
  • Android Studio + sqllite 数据库连接的步骤以及常见问题

    软件见文末 前提是先安装好sqllite----无脑式next安装 提示:.xml有些资源需要用自己有的,否者有可能会报错!!!! 1、打开SDK后,查看SDK路径 2、在SDK路径下右键鼠标运行命令行,输入命令monitor,即可启动Android monitor Device如下图所示: 执行完monitor,正常情况下会直接跳转

    2024年02月04日
    浏览(48)
  • Android Studio链接数据库(MySQL)步骤及问题

    1、在libs加入jdbc,右键并选择Add As Library 2、manifests中设置网络权限。 写上 3、Android4.0以后版本不支持在主线程中执行耗时操作,对数据库的操作要新开一个线程。 简单示例:(具体应用涉及到线程数据传递) new Thread(new Runnable() { @Override public void run() { String CLS=“com.mysql.j

    2023年04月13日
    浏览(47)
  • Android 连接MySql数据库步骤

    1.首先我们需要导入mysql驱动jar包下载地址:   在android studio的build.gradle中插入 } 2、建立JDBCutils类    分析:jdbc:mysql://192.168.43.215:3306/user\\\",\\\"root\\\",\\\"1234\\\"语句    1、jdbc:mysql://基本格式    2、192.168.43.215你当前连的网的Ipv4地址(可以在cmd命令窗口输入ipconfig命令,找到你连的网(

    2024年02月05日
    浏览(45)
  • Android连接MySQL数据库的方法

    由于之前那篇文章是在大学期间好多东西都不太懂的时候写的,放到现在再来看总感觉到处都是问题(或者说已经看不懂啦)。但是看到每天上涨的那点阅读量,想了想还是把这个再用相对正常的方式再重写一遍吧。 为了省事本项目的服务端采用SpringBoot + MybatisPlus开发,要是

    2023年04月08日
    浏览(40)
  • Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

    前言:如果android studio安装和第一次跑helloworld有什么问题可以参考:(34条消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客 目录 准备工作 查询学生数目demo:  增删改查完整案例 1、在Android Studio中新建项目My Application; 2、在Androi

    2024年02月10日
    浏览(44)
  • Android:安卓开发采用Volley网络框架+MySQL数据库,实现从服务器获取数据并展示完成记单词APP

    实现功能:设计一个记单词APP。服务器采用Tomcat,数据库采用Mysql。实现用户的注册登录功能以及单词的增删改查。 指标要求:实现UI布局;将系统数据保存到Mysql数据库中,并采用Volley网络框架实现从服务器获取数据并展示。 步骤1:搭建开发环境。 步骤2:准备资源。 步骤

    2024年02月13日
    浏览(47)
  • Android Termux安装MySQL数据库 | 公网安全远程连接【Cpolar内网穿透】

    转载自cpolar极点云的文章:Android Termux安装MySQL数据库 | 公网安全远程连接【Cpolar内网穿透】 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。 MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开

    2024年02月01日
    浏览(58)
  • Android+阿里云数据库,实现安卓云数据库

    目录 阿里云部分 Adnroid配置部分 Android代码部分 效果 在阿里云中查看已保存的数据 进入阿里云首页,这里选择的是 云数据库RDS MySQL版 。 购买完成后,点击 控制台 。 点击 “云数据库RDS版” 点击 实例列表 点击 实例ID 接下来是 设置白名单 。 测试的话,设置为 0.0.0.0/0 就可

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包