Android通过json向MySQL中读写数据的方法详解【写入篇】

 更新时间:2016年06月30日 16:08:11   作者:天鹰之眼  
这篇文章主要介绍了Android通过json向MySQL中读写数据的方法,结合实例形式较为详细的分析了Android json类的定义、调用及php接收json数据并写入mysql的实现技巧,需要的朋友可以参考下

本文实例讲述了Android通过json向MySQL中写入数据的方法。分享给大家供大家参考,具体如下:

先说一下如何通过json将Android程序中的数据上传到MySQL中:

首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下

public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
// function get json from url
// by making HTTP POST
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
Log.d("json", json.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}

主程序中这样调用:

params = new ArrayList<NameValuePair>();
//这里可以替换成你自己程序中的一些键值对
params.add(new BasicNameValuePair("time", ""+time));
params.add(new BasicNameValuePair("lat", ""+lat));
params.add(new BasicNameValuePair("lon", ""+lon));
params.add(new BasicNameValuePair("encyptiontype",encyptiontype));
params.add(new BasicNameValuePair("rssi",rssi));
params.add(new BasicNameValuePair("name",name));
JSONParser jsonParser = new JSONParser();
//数据的php文件的路径
String url_up = "******/文件名字.php";
try{
JSONObject json = jsonParser.makeHttpRequest(url_up,"POST", params);
Log.v("uploadsucceed", "uploadsucceed");
}catch(Exception e){
e.printStackTrace();
}

最后就是定义一个接收数据的php文件:

<?php
// array for JSON response
//此处需要将数据库名和表明还有密码做相应修改,改成你自己的
$con = mysql_connect("localhost","root",null);
if (!$con) {
die('Could not connect:'.mysql_error() );
}
mysql_select_db("a0722152915", $con);
$response = array();
include("conn.php");
// check for required fields
if (isset($_POST['time']) && isset($_POST['lat']) && isset($_POST['lon'])&& isset($_POST['encyptiontype'])&& isset($_POST['rssi'])&& isset($_POST['name'])) {
$time = $_POST['time'];
$lat = $_POST['lat'];
$lon = $_POST['lon'];
$encyptiontype = $_POST['encyptiontype'];
$rssi = $_POST['rssi'];
$name = $_POST['name'];
$result = mysql_query("INSERT INTO wifi_state(time, lat, lon,encyptiontype,rssi,name) VALUES('$time', '$lat', '$lon','$encyptiontype','$rssi','$name')");
echo $result;
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "Product successfully created.";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>

注意:如果你的设备中android操作系统是4.0以上的,那么要在主程序中加上下面一段代码,才能上传成功

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
  .detectDiskReads()
  .detectDiskWrites()
  .detectNetwork() // or .detectAll() for all detectable problems
  .penaltyLog()
  .build());
  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
  .detectLeakedSqlLiteObjects()
  .detectLeakedClosableObjects()
  .penaltyLog()
  .penaltyDeath()
  .build());

如果是4.0以下的操作系统当然不用加了

下面是上传成功后的效果图:

读数据的方法讲放在下一篇《Android通过json向MySQL中读写数据的方法详解【读取篇】》中介绍

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • AndroidUI组件SlidingTabLayout实现ViewPager页滑动效果

    AndroidUI组件SlidingTabLayout实现ViewPager页滑动效果

    这篇文章主要介绍了AndroidUI组件SlidingTabLayout实现ViewPager页滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android利用zxing生成二维码的过程记录

    Android利用zxing生成二维码的过程记录

    Android中二维码生成的最常用库就是zxing了,正好目前项目有了生成二维码的需求,所以下面这篇文章主要给大家介绍了关于Android利用zxing生成二维码的相关资料,需要的朋友可以参考下
    2021-07-07
  • Android实现完整游戏循环的方法

    Android实现完整游戏循环的方法

    这篇文章主要介绍了Android实现完整游戏循环的方法,以实例代码形式较为详细的分析了Android游戏循环的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android IdleHandler使用方法详解

    Android IdleHandler使用方法详解

    这篇文章主要为大家介绍了Android IdleHandler使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Flutter图片加载与缓存机制的深入探究

    Flutter图片加载与缓存机制的深入探究

    应用开发中经常会碰到网络图片的加载,通常我们会对图片进行缓存,以便下次加载同一张图片时不用再重新下载,下面这篇文章主要给大家介绍了关于Flutter图片加载与缓存机制的相关资料,需要的朋友可以参考下
    2021-11-11
  • Android 实现带角标的ImageView(微博,QQ消息提示)

    Android 实现带角标的ImageView(微博,QQ消息提示)

    下面小编就为大家分享一篇Android 实现带角标的ImageView(微博,QQ消息提示),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android自定义View实现箭头沿圆转动实例代码

    Android自定义View实现箭头沿圆转动实例代码

    这篇文章主要介绍了Android自定义View实现箭头沿圆转动实例代码,需要的朋友可以参考下
    2017-09-09
  • Android Studio真机无线连接USB设备调试运行详解流程

    Android Studio真机无线连接USB设备调试运行详解流程

    你在Android Studio写app时是否也有想过如果可以不用数据线连接手机调试运行就好了?如果需要取出数据线插接的话我肯定是嫌麻烦的,但是模拟器有时候需要测试一些需要硬件支持的功能时又不管用,所以最好的测试还是在真机上,本篇教你扔掉数据线来无线调试
    2021-11-11
  • android实现清理缓存功能

    android实现清理缓存功能

    这篇文章主要为大家详细介绍了android实现清理缓存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Flutter自定义实现弹出层的示例代码

    Flutter自定义实现弹出层的示例代码

    这篇文章主要为大家详细介绍了Flutter如何自定义组件实现弹出层的效果, 文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08

最新评论