android studio通过jdbc直连mysql

       前段时间做一个android项目,需要连接mysql,以前写web都是通过jdbc直连的,想着android能不能直连,去网上查,有人说能直连,有人说不能,而且根据说能的人发的代码,验证不可行。

       同样是java语言编写,应该不会存在问题,查看jdbc连mysql文档,发现是需要网络权限的,在AndroidMainfest.xml文件中,加上网络权限:

 

       加上网络权限仍然出现问题,查看log发现网络权限出错。查看android api发现版本不支持直接访问网络,必须通过子线程,认为直接在主线程中访问网络是不安全的。给一个例子,以用户注册为例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class RegisterThread extends Thread{
private Locationuserinfo user;
    public RegisterThread(Locationuserinfo user) {
        this.user = user;
    }
    public void run() {
        Connection cn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            cn = DriverManager.getConnection("jdbc:mysql://192.168.1.111:3306/your database name",
                    "root", "your password");
            String sql = "INSERT INTO locationuser(userName,tel,password) VALUES (?,?,?)";
            PreparedStatement ps = cn.prepareStatement(sql);
            ps.setString(1,user.getUserName());
            ps.setString(2,user.getTel());
            ps.setString(3,user.getPassword());
            ps.executeUpdate();

            if (ps!=null) {
                ps.close();
            }
            if (cn!=null) {
                cn.close();
            }
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

根据自己的数据库名,数据表名,用户名,密码,修改代码。

其实,我并不推荐这种方式,这种方式的数据不安全,当然可以在写入数据库之前对数据进行加密,当需要使用这些数据时,解密即可。

通常,我们使用webserver来进行中转,实现对数据库的操作,app访问webserver,webserver去访问数据库。

同样的,java可以使用servlet进行数据库操作。

感兴趣的朋友可以试一下这两种方法。

jdbc还需要一个连接mysql的jar包,可以自己去网上下载,下载链接我不发了。也可以留言,我会直接发给你。

有相关问题的也可以留言,大家一起探讨。

jdbc:链接:https://pan.baidu.com/s/1BSyzFn7Ohpx1reX89iGLgA 
        提取码:tp55 

mysql:链接:https://pan.baidu.com/s/14BlDqGxgWdjj3UiJphoFNw 
           提取码:7hou 
 

你可能感兴趣的:(android studio通过jdbc直连mysql)