json数据解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个方法是参考
/networking-database-problems-f29/connecting-to-mysql-database-t50063.html
国外老外的一些经验所得。这里我总结一下要点:
1、需要一个mysql数据库,这个怎么搞出来,大家觉得有问题先学学mysql再回来接着看。
2、需要一个php操作mysql数据库的脚本,上传到服务器地址
3、需要修改Android的manifest文件,入网许可!!
一、首先我们假如已经把MYSQL数据库建立好了,写一个PHP操作文件上传到服务器访问地址
[php]view plaincopyprint?
1
2 mysql_connect("localhost","yourName","yourPassword");
3 mysql_select_db("yourDB");
4 $q=mysql_query("SELECT * FROM user_info WHERE uName
='".$_REQUEST['name']."'");
5while($e=mysql_fetch_assoc($q))
6 $output[]=$e;
7 print(json_encode($output));
8 mysql_close();
9?>
稍微解析一下上面PHP内容,
[php]view plaincopyprint?
10$q=mysql_query("SELECT * FROM user_info WHERE uName ='".$_REQUEST['name']."'"); 这句当中
[php]view plaincopyprint?
11.$_REQUEST['name'].
就表示要从android里面输入到这里的一个键值对的值,id为name,下面我们
写Android程序会再说明一下。
[php]view plaincopyprint?
12json_encode($output));
这个就是把输出的结果转成json的数据格式返回给Android进行json数据解析。
二、准备写Android关键的实现连接Mysql方法
[java]view plaincopyprint?
13//连接MYSQL数据库方法
14 //并且返回结果
15private String checkServerDataByName()
16 {
17 //数据流
18 InputStream is = null;
19
20 //返回值
21 String result = "";
22 String returnResult ="";
23 //这里增加要传送到PHP进行MYSQL操作的名称条件
24 ArrayList
ArrayList
25 nameValuePair.add(new BasicNameValuePair("name", mInputName));
26
27 //Http post
28try {
29 /*创建一个HttpClient的一个对象*/
30 HttpClient httpClient = new DefaultHttpClient();
31 /*创建一个HttpPost的对象*/
32 //MYSQL_0代表我上传的上面写得PHP 文件服务器地址
33 HttpPost httpPost = new HttpPost(MYSQL_0);
34 /*设置请求的数据*/
35 httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
36 /*创建HttpResponse对象,处理请求*/
37 HttpResponse response = httpClient.execute(httpPost);
38 /*获取这次回应的消息实体,获取返回的实体消息*/
39 HttpEntity entity = response.getEntity();
40 /*把这些消息指向对象实体的数据流*/
41 is = entity.getContent();
42 } catch (Exception e) {
43 // TODO Auto-generated catch block
44 Log.e("log_tag", "Error in http connection "+e.toString());
45 }
46
47 //接下来对上面能够获取返回的IS数据流进行相关处理
48 //这里不懂的可以先看看JAVA里面的IO
流
49try {
50 BufferedReader br = new BufferedReader(new InputStreamReader(is,
51 "iso-8859-1"), 8);
52 StringBuilder sb = new StringBuilder();
53 String line = null;
54while ((line = br.readLine()) != null) {
55 sb.append(line + "\n");
56 }
57 is.close(); //读完记得一定要关闭,其实这个应该放到finally块里面,这里偷懒了
58 result = sb.toString();
59 } catch (Exception e) {
60 // TODO: handle exception
61 Log.e("log_tag", "Error converting result "+e.toString());