Android使用JDBC方法连接MySQL数据库总结

2

国际惯例,先推荐一首歌刘昊霖-儿时

安卓自带轻量级的SQLite数据库,带来很大的方便,但是在实际的项目开发中往往还是要和服务器端的数据库通信,一般有两种方式:

一、通过JDBC直接连接MySQL数据库。

二、通过http请求将数据传到服务器端,然后服务器再连接数据库。

在实际的开发中一般都用第二种方式,因为第一种方式很不安全,数据库的用户名和密码都暴露在源码中,别人一反编译就GG。

由于本人刚开始接触安卓,这里先用第一种方法。

这里我以Linux服务器中的MySQL数据库为例。

首先需要导入jdbc包,这里不再演示,不会的请百度。

准备工作完成。

android使用jdbc连接MySQL数据库大致分为以下几个步骤:

  1. 注册JDBC驱动程序
  2. 建立数据库连接对象
  3. 创建Statement对象
  4. 发送SQL语句
  5. 处理返回的结果
  6. 关闭连接

第一步,注册驱动程序

1
Class.forName("com.mysql.jdbc.Driver");

第二步,建立数据库连接对象

这里url中是我服务器的公网地址,本地数据库填localhost,后面的test是数据库名称

1
2
String url = "jdbc:mysql://120.27.111.133:3306/test";
Connection conn = DriverManager.getConnection(url, "user", "pwd");

第三步,创建Statement对象

1
Statement stmt = conn.createStatement();

第四步,发送SQL语句,返回结果集并处理

1
2
3
4
5
String sql = "select * from tb_user";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
    Log.v("july", "user_id-->" + rs.getString(1) + "  user_name-->" + rs.getString(2));
}

最后,关闭连接

1
2
3
rs.close();
stmt.close();
conn.close();

需要注意的几点:

1、关闭防火墙
2、在配置文件中加入网络访问权限android.permission.INTERNET
3、MySQL数据库允许远程用户访问

 

如何设置MySQL数据库允许远程用户访问:

在安装mysql的机器上运行以下命令:
1、mysql -h localhost -u root
进入MySQL服务器

2、GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’WITH GRANT OPTION

赋予任何主机访问数据的权限
例如,你想让用户名root使用密码123456从任何主机连接到mysql服务器的话。

1
2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WI 
TH GRANT OPTION;

如果你想允许用户root从ip为192.168.1.6的主机连接到mysql服务器,并使用123456作为密码

1
2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3'IDENTIFIED BY 
'123456' WITH GRANT OPTION;

3、FLUSH PRIVILEGES

修改生效
4、EXIT

退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录
运行结果截图:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-15-%e4%b8%8b%e5%8d%8812-01-48

源代码:

1
2
3
4
5
6
7
8
new Thread()
{
    public void run() {
        try {
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://120.27.111.133:3306/test";
            Connection conn = DriverManager.getConnection(url, "root", "zhudan5293");%