Android Studio连接MySQL8.0

【序言】

        移动平台这个课程要做一个app的课设,我打算后期增加功能改成毕设,就想要使用MySQL来作为数据库,相对于SQLlite来说,我更熟悉MySQL一点。

【遇到的问题】

        一直无法连接上数据库,开始的时候查了很多资料,说是MySQL8.0版本比较高,密码验证插件是caching_sha2_password,Android Studio中的JDBC驱动可能不支持这种加密方式。(但我并不确定是否是这个原因,就是一直连不上)

我最开始用的是下面的代码(连接数据库):

    private static final String  TAG="DBUtils";//    用于日志打印
    private static Connection conn=null;//    定义连接变量conn
    //数据库连接函数
    public static Connection getConnection(String dbname) {//定义connection类函数,需要返回一个connection对象,即在上面定义的conn

        String ip = "192.168.0.146";//ip地址,win+R,输入cmd打开控制台,输入ipconfig /all查看本机ipv4地址,最上面那个
        int port = 3306;//MySQL安装时的默认端口号,无需更改
        String user = "root";//打开Navicat,点击用户,如果显示root@localhost,请修改为root@%或新加一个root@%,%表示任意,任意ip地址都可以连接
        String password = "123456";//密码
        String url = "jdbc:mysql://172.19.221.130:3306/course_design?useUnicode=true&characterEncoding=UTF-8&useSSL=true";
//        "?useUnicode=true&characterEncoding=UTF-8"添加中文信息时不会乱码
//       注册JDBC驱动的固定语句
        try {
            Class.forName("com.mysql.jdbc.Driver");//这是一个目录,你可以找到这个目录点进去就懂了
            Log.d(TAG, "加载JDBC驱动成功");
        } catch (ClassNotFoundException e) {
            Log.d(TAG, "加载JDBC驱动失败");
        }
//        创建与mysql的连接对象conn,当然你也可以直接把上面定义的那些变量url的值直接写进去,就不用上面写一堆定义
        try {
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功");
            Log.d(TAG, "数据库连接成功");

        } catch (SQLException e) {
            Log.d(TAG, "数据库连接失败");
        }
        return  conn;//connection类,返回一个connection连接对象
    }

但是一直都是打印“数据库连接失败”。原博主的方法他自己是成功的,可能是我哪一步出错了我没发现吧。参考链接:Android studio 连接MYQSL8.0_android studio下载适配mysql8-CSDN博客。最后我试了别的方法成功了。

【5.11补充】

重大发现,上面这个代码可以连接数据库!!!不过也是要开新线程,在调用函数的时候调用就可以连接了!如图:

【我的解决方法】

1、开启远程访问3306端口

步骤1:依次点击控制面板—系统和安全—windows防火墙—高级设置-入站规则

步骤2:如图

步骤3:如图。填好端口号3306后,一直点击下一步即可。

2.进入MySQL页面

步骤1:Win+R,输入cmd,进入命令行窗口,输入mysql -u root -p后回车,再输入你的数据库密码

步骤2:

输入命令并回车:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION

该命令表示允许从所有IP进行连接,其中123456为数据库密码

3.需要新开一个线程运行,才能连接MySQL数据库

代码如下:

public void initConnect(String table) {
        // 必须新开线程才能连接MySQL数据库
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 数据库驱动
                String CLS="com.mysql.jdbc.Driver";
                String URL="jdbc:mysql://172.19.221.130:3306/course_design?serverTimezone = GMT&characterEncoding=UTF-8";
                String USER="root";
                String PWD="123456";
                try {
                    Class.forName(CLS).newInstance();// 加载数据库驱动
                    Connection conn=(Connection) DriverManager.getConnection(URL,USER,PWD);// 连接数据库
                    String sql="select * from "+table;
                    Statement stmt=conn.createStatement();
                    ResultSet rs=stmt.executeQuery(sql);// 执行sql
                    List<User> users = new ArrayList<>();
                    while (rs.next()) {
                        User user = new User(rs.getInt("id"),rs.getString("username"),rs.getString("password"));
                        user.setId(rs.getInt("id"));
                        user.setName(rs.getString("username"));
                        user.setPassword(rs.getString("password"));
                        users.add(user);
                        System.out.println(users);
                    }
                    System.out.println("连接成功");
                } catch (ClassNotFoundException | SQLException | IllegalAccessException | InstantiationException e) {
                    System.out.println("连接失败");
                    e.printStackTrace();
                }
            }
        }).start();
    }

顺带说一下导入jar包和添加权限

4、导入jar包

步骤1:到官网下载:MySQL :: Download MySQL Connector/J (Archived Versions)

我这里用的版本是5.1.49,建议用5.几的版本,版本高的似乎会出错

步骤2:下载后找到对应版本的jar包,复制粘贴到libs的文件夹下(没有libs就建一个)

步骤3:选中libs目录下的jar包,右击鼠标,点击最下面的Add as Library即可。这样系统就会自动在app目录下的build.gradle中帮你添加依赖。(如图)

注意:如果你的jar包用不了重新导入了别的版本,记得到build.gradle中将上一个版本的jar包删掉,不然会因为系统找不到该文件而报错

5、在AndroidManifest.xml中添加网络权限

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

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

然后就可以连接MySQL啦!

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用 Android Studio 连接 MySQL 8.0 数据库,您可以使用以下步骤: 1. 在 MySQL 服务器上创建一个新用户,并授予该用户适当的权限以连接到数据库。例如,您可以使用以下命令创建一个名为“new_user”的新用户并授予该用户访问名为“my_database”的数据库的权限: ``` CREATE USER 'new_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'%'; ``` 在此示例中,“new_user”是新用户的名称,“password”是用户的密码,“my_database”是要访问的数据库的名称。注意,将“%”用作主机名将允许从任何主机连接到数据库。如果您想限制访问,可以将“%”替换为特定的 IP 地址或主机名。 2. 在 Android Studio 中,打开项目并导航到“app”文件夹中的“build.gradle”文件。在该文件中添加以下依赖项: ``` implementation 'mysql:mysql-connector-java:8.0.27' ``` 这将允许您在项目中使用 MySQL 连接器。 3. 在您的 Java 代码中,使用以下代码连接到 MySQL 数据库: ``` try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection( "jdbc:mysql://<hostname>:<port>/<database_name>?user=<username>&password=<password>", "<username>", "<password>" ); // 执行数据库操作 } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } ``` 在这里,您需要将以下值替换为适当的值: - `<hostname>`:MySQL 服务器的主机名或 IP 地址 - `<port>`:MySQL 服务器的端口号(默认为 3306) - `<database_name>`:要连接的数据库的名称 - `<username>`:在第一步中创建的 MySQL 用户的用户名 - `<password>`:在第一步中为 MySQL 用户创建的密码 注意,在连接字符串中使用了 URL 编码,因此需要将用户名和密码传递两次。 希望这可以帮助您连接到 MySQL 8.0 数据库! ### 回答2: Android Studio连接MySQL 8.0需要完成以下几个步骤: 第一步:下载MySQL Connector/J 在MySQL官网上下载MySQL Connector/J,然后将其解压缩至Android Studio的项目目录下的app/libs文件夹中。然后在build.gradle中添加以下代码片段: dependencies { ... implementation files('libs/mysql-connector-java-8.0.13.jar') } 第二步:添加网络权限 在AndroidManifest.xml文件中添加以下代码: <uses-permission android:name="android.permission.INTERNET" /> 第三步:编写连接代码 在Android Studio的项目中创建一个Java类,命名为MySQLiteHelper。在MySQLiteHelper中编写以下代码,这段代码会连接到MySQL数据库: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLiteHelper { private static final String URL = "jdbc:mysql://数据库IP地址:端口号/数据库名?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; private static final String USER = "数据库用户名"; private static final String PASSWORD = "数据库密码"; private Connection connection; public Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(URL, USER, PASSWORD); System.out.println("Database connection success!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return connection; } public void closeConnection() { try { connection.close(); System.out.println("Database connection close!"); } catch (SQLException e) { e.printStackTrace(); } } } 需要注意的是,其中的URL需要修改为自己的数据库IP地址、端口号和数据库名,USER和PASSWORD需要修改为自己的数据库用户名和密码。 第四步:调用连接代码 在需要连接数据库的Java类中调用MySQLiteHelper.getConnection()方法,连接MySQL数据库就完成了。 总结 Android Studio连接MySQL 8.0需要下载MySQL Connector/J,添加网络权限,编写连接代码,并在需要连接数据库的Java类中调用MySQLiteHelper.getConnection()方法。以上是连接MySQL 8.0的基本步骤,需要在实际开发中按照自己的需求进行修改和优化。 ### 回答3: 在Android Studio连接MySQL8.0需要进行如下步骤: 1.下载并安装MySQL Connector/J MySQL Connector/J是 MySQL 的一个官方 JDBC 驱动程序,它提供了在 Java 应用程序和 MySQL 数据库之间进行连接的功能。因此,在连接 MySQL 数据库之前,需要下载和安装MySQL Connector/J。 在完成下载后,将JAR文件拷贝到项目的libs文件夹下,然后在模块的build.gradle文件中添加以下声明: ``` dependencies { implementation files('libs/mysql-connector-java-8.0.26.jar') } ``` 2.添加网络连接权限 在AndroidManifest.xml 文件中添加以下声明,以获取网络连接权限: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` 3.编写Java代码连接MySQL 在代码中,我们需要使用JDBC驱动程序创建一个数据库连接,然后使用此连接来执行查询语句和插入语句等操作。以下是一个简单的示例代码: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MySQLConnect { public static void main(String[] args) { // MYSQL账户和密码以及使用的数据库名称 String url = "jdbc:mysql://localhost:3306/test"; //jdbc:mysql是驱动程序协议,localhost:3306是MYSQL服务器的IP地址和端口,test是连接的数据库名称 String user = "root"; //MYSQL用户名 String password = "****"; //MYSQL密码 try { //加载JDBC连接器 Class.forName("com.mysql.cj.jdbc.Driver"); //创建一个连接 Connection connection = DriverManager.getConnection(url, user, password); //创建一个PreparedStatement对象,该对象可以避免SQL注入攻击 PreparedStatement preparedStatement = connection.prepareStatement("select * from students where Grade=?"); //使用PreparedStatement对象设置查询参数 preparedStatement.setString(1, "A"); //执行查询并返回结果 ResultSet resultSet = preparedStatement.executeQuery(); //遍历结果 while (resultSet.next()) { System.out.println(resultSet.getInt(1) + " " + resultSet.getString(2) + " " + resultSet.getString(3)); } //关闭ResultSet、PreparedStatement和Connection对象 resultSet.close(); preparedStatement.close(); connection.close(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } } ``` 通过以上步骤,就可以在Android Studio连接MySQL8.0数据库并执行常见的SQL操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值