Android开发中,大多数连接到远程MySQL数据库的方法是加入特定的Service到代码中。由于MySQL通常是和PHP一起使用的,最简单以及最常见的方法是写PHP脚本管理数据连接,以及从Android系统上使用HTTP协议运行这个脚本


可以以JSON格式的方式编写数据,Android和PHP之间,两种语言都很容易嵌入JSON函数。


我演示的示例代码,根据给定的条件从数据库读取数据,在Android开发平台上创建日志消息接收数据。

假设我们有个命名为PeopleData的MySQL数据库,并且使用以下的SQL语句创建了一个数据表:


CREATE TABLE `people` (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`name` VARCHAR( 100 ) NOT NULL ,`sex` BOOL NOT NULL DEFAULT '1',`birthyear` INT NOT NULL)


想要读取people数据表中出生日期在指定年份之后的的所有数据。PHP代码是非常简单的:
1. 连接到数据库
2. 运行SQL查询,其中有个块依据于JSON格式的POST/GET值的数据。

比如,在getAllPeopleBornAfter.php文件中有这个功能:


'".$_REQUEST['year']."'");while($e=mysql_fetch_assoc($q)) $output[]=$e;print(json_encode($output));mysql_close();?>


Android部分比较复杂一些:

1. 使用HttpPost获取数据,发送年份值
2. 响应的信息转化成字符
3. 解析JSON数据,读取你想要的数据。


String result = "";//the year data to sendArrayList nameValuePairs = newArrayList();nameValuePairs.add(new BasicNameValuePair("year","1980"));//http posttry{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = newHttpPost("http://example.com/getAllPeopleBornAfter.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent();}catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString());}//convert response to stringtry{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString();}catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString());}//parse json datatry{ JSONArray jArray = new JSONArray(result); for(int i=0;i


当然也可能使用HTTPS,发送密码,访问数据,或是在每一边做更多复杂的数据处理,写更多代码。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  3. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  4. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  5. Android(安卓)的 Sqlite基本操作
  6. Android与webservice进行实体对象的传递
  7. 解决 :android studio 提交代码到git/github失败 Could not read
  8. Android微信右上角弹出的对话选择框实现
  9. Android(安卓)wifi 调试

随机推荐

  1. 不会出现Javascript context.closePath()
  2. 宽度切换jQuery中的Animate在FireFox中不
  3. JQuery从动态内容加载动态内容
  4. HTML5移动开发基础
  5. Jquery实现table行数的增加,删除,实现指定
  6. 使用phonegap包装html5网页为iOS app
  7. 使用bootstrap 3,你如何拥有一个完全不同
  8. 让列在3列CSS布局中扩展到相同的高度?
  9. 如何配置访问WAS部署中的html文件
  10. 文件上传js打开文件管理器过滤只显示指定