一、步骤
1、在libs加入jdbc,右键并选择Add As Library
2、manifests中设置网络权限。
写上
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
3、Android4.0以后版本不支持在主线程中执行耗时操作,对数据库的操作要新开一个线程。
简单示例:(具体应用涉及到线程数据传递)
new Thread(new Runnable() {
@Override
public void run() {
String CLS=“com.mysql.jdbc.Driver”;
String URL=“jdbc:mysql://IP地址:3306/数据库名?serverTimezone=UTC”;
String USER=“数据库用户名”;
String PWD=“数据库密码”;
String test=“”;
try {
Class.forName(CLS).newInstance();
Connection conn=(Connection) DriverManager.getConnection(URL,USER,PWD);
String sql=“要执行的sql语句”;
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while (rs.next()){
test+=rs.getString(“name”);
Log.v(“debug”,“AAAA”);
Log.v(“debug”,test);
}
} catch (ClassNotFoundException | SQLException | IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
}).start();
4、 因Android运行在模拟器上,访问数据库的ip不能是127.0.0.1或localhost,应该为本主机的IP地址,可以用win + r 输入 cmd内 用ipconfig查询本地IP。
5、mysql的用户要保证能有权限远程访问(用户要以@%结尾,怎么操作可以百度)
是否能远程访问可以用navicat测试,下图为没权限的root用户
二、遇到的问题
1、仔细看好mysql和jdbc的版本。一般5.6的mysql可以用mysql-connector-java-5.1.8等一些jdbc。但我尝试mysql8.0+版本与8.0+的jdbc连接不上数据库app闪退。8.0+的mysql也可以使用低版本的jdbc。
使用jdbc5+
Class.forName(“com.mysql.jdbc.Driver”);
使用jdbc8+,修改为
Class.forName(“com.mysql.cj.jdbc.Driver”);
2、一定注意远程访问权限的问题(上述)
3、要用主线程外的线程访问数据库(上述)
版权归原作者 Salvator_ 所有, 如有侵权,请联系我们删除。