Android studio 连接MySQL数据库

本文介绍了如何在Android Studio项目中连接MySQL数据库,包括引入mysql-connector-java库,设置AndroidManifest.xml权限,创建DBUtils工具类,UserDao操作类,以及解决Android 4.0以上版本的NetworkOnMainThreadException异常的方法。

Android studio 连接MySQL数据库

1、打开project项目结构,找到app->libs目录,把自己的 mysql-connector-java-5.1.47-bin.jar 包引入进去(适合自己的版本)

并右键 Add ad Library

2、在AndroidManifest.xml 中加入以下权限代码

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

3、新建一个工具类 DBUtils 用于连接数据库

  • 注意,Android连接MySQL数据库 需要 本机的ip地址,而不是localhost(127.0.0.1)

  • win+R 输入cmd 打开黑窗口 输入 ipconfig 回车查看本机 ipv4地址

  • private final static String url = "jdbc:mysql://本机ipv4地址/需要连接的数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
    
public class DBUtils {

    private final static String driver = "com.mysql.jdbc.Driver";
    private final static String url = "jdbc:mysql://10.8.186.95:3306/journey_reform?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
    private final static String username = "root";
    private final static String password = "123456";

    Connection conn=null;
    Statement st=null;
    ResultSet rs=null;

    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            System.out.println("加载驱动错误");
        }
    }


    //2. 获取连接
    public static Connection getConnect() throws Exception {
        return DriverManager.getConnection(url, username, password);
    }

    //3. 释放连接资源

    public static void release(Connection conn, Statement st, ResultSet rs) throws Exception {
        if (rs != null) {
            rs.close();
        }
        if (st != null) {
            st.close();
        }
        if (conn != null) {
            conn.close();
        }

    }

}

4、新建类 UserDao 用于 对用户数据进行操作.

public class UserDao {

    //查询用户的方法
    public boolean select(String table) throws Exception {
        Connection conn = null;
        Statement state = null;
        ResultSet rs = null;
        try {
            conn = DBUtils.getConnect();
            state = conn.createStatement();
            String sql = "select * from " + table;
            rs = state.executeQuery(sql);
            while (rs.next()) {
                System.out.println(rs.getString(1) + " " + rs.getString(2));//就是输出第一列和第二列的值
            }


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtils.release(conn, state, rs);
        }
        return true;
    }

}

5、测试:在 ManActivity.java 中的Oncreate()方法中调用该方法,在控制台查看输出

在其他地方调用也行,我们主要是为了测试,使该界面一加载就执行我们的方法,就能在控制台看见输出

    userDao=new UserDao();
        try {
            userDao.select("journey_user");
        } catch (Exception e) {
            e.printStackTrace();
        }

此时会报错 : Caused by: android.os.NetworkOnMainThreadException

查阅资料了解到,在Android 4.0以上,网络连接不能放在主线程上,不然就会报错android.os.NetworkOnMainThreadException。但是4.0下版本可以不会报错。

解决此问题有两种解决的方法:

1.可以再Activity的onCreate()方法中加入这样一段代码,适用于网络请求数据量很小的话,如下

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

2.启动一条子线程进行你的网络请求,推荐使用这种

// Android 4.0 之后不能在主线程中请求HTTP请求
            new Thread(new Runnable(){
                @Override
                public void run() {
                    cachedImage = asyncImageLoader.loadDrawable(imageUrl, position);
                    imageView.setImageDrawable(cachedImage);
                }
            }).start();

6、测试成功:

在这里插入图片描述

Android Studio连接MySQL数据库通常需要通过 JDBC (Java Database Connectivity) 来实现。以下是简单的步骤: 1. **添加JDBC驱动**: - 首先,你需要在项目中添加MySQL的JDBC驱动。如果你的项目依赖管理是Gradle,可以在`build.gradle`文件中添加依赖,例如对于Maven库: ``` implementation 'com.mysql:cj.jdbc:8.0.25' ``` - 或者如果你使用的是本地库,下载对应版本的JAR包并将其添加到项目的libs目录下。 2. **配置连接信息**: - 创建一个`DataSource`对象,并提供数据库URL、用户名、密码等信息: ```java String url = "jdbc:mysql://localhost:3306/your_database_name"; String username = "your_username"; String password = "your_password"; Connection conn = DriverManager.getConnection(url, username, password); ``` 3. **处理事务和关闭连接**: - 使用try-with-resources语句自动关闭数据库连接,当代码块结束后会自动关闭Connection: ```java try (Connection conn = DriverManager.getConnection(url, username, password)) { // 执行SQL操作... } catch (SQLException e) { e.printStackTrace(); } ``` 4. **执行SQL操作**: - 使用PreparedStatement防止SQL注入攻击,执行查询或更新操作: ```java String sql = "SELECT * FROM your_table"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); ``` 5. **读取结果集**: - 循环遍历ResultSet获取数据。 6. **异常处理**: - 编写适当的错误处理代码,如捕获SQLException及其子类。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值