您的位置:首页 > 移动开发 > Android开发

android studio通过jdbc直连mysql

2018-03-15 10:38 357 查看
       前段时间做一个android项目,需要连接mysql,以前写web都是通过jdbc直连的,想着android能不能直连,去网上查,有人说能直连,有人说不能,而且根据说能的人发的代码,验证不可行。
       同样是java语言编写,应该不会存在问题,查看jdbc连mysql文档,发现是需要网络权限的,在AndroidMainfest.xml文件中,加上网络权限:
<uses-permission android:name="android.permission.INTERNET"/>       加上网络权限仍然出现问题,查看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包,可以自己去网上下载,下载链接我不发了。也可以留言,我会直接发给你。
有相关问题的也可以留言,大家一起探讨。
       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: