Android通过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程序设计有所帮助。

时间: 2017-12-04

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

在php和MySql中计算时间差的方法详解

 在php中计算时间差有时候是件麻烦的事!不过只要你掌握了日期时间函数的用法那这些也就变的简单了. 最近在研究自己爱围脖的时候就要计算到恋爱天数,这需要php根据每天的日期进行计算,下面就来谈谈实现这种日期计算的几种方法: (1) 如果有数据库就很容易了!若是MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可!若是MYSQL那就用两个日期字段的差值计算的计算结果保存在另一个数值型字段中!用时调用便可! (2)如果没有数据库,那就得完全用php的时间日期函数! 下面主要说明之

MySQL中的RAND()函数使用详解

  这篇文章主要介绍了MySQL中的RAND()函数使用详解,是MySQL入门学习中的基础知识,需要的朋友可以参考下 MySQL RAND()函数调用可以在0和1之间产生一个随机数: ? 1 2 3 4 5 6 7 mysql> SELECT RAND( ), RAND( ), RAND( ); +------------------+-----------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +----------

MySQL中的mysqldump命令使用详解

mysql|详解 MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半,另外的一般是从MySQL数据库中导出数据.有许多的原因我们需要导出数据.一个重要的原因是用于备份数据库.数据的造价常常是昂贵的,需要谨慎处理它们.经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见. 比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快

针对Mysql中mysqldump命令使用的详解

MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半,另外的一般是从MySQL数据库中导出数据.有许多的原因我们需要导出数据.一个重要的原因是用于备份数据库.数据的造价常常是昂贵的,需要谨慎处理它们.经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见. 比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版.医院越来越走

Android编程获取GPS数据的方法详解_Android

本文实例讲述了Android编程获取GPS数据的方法.分享给大家供大家参考,具体如下: GPS是Android系统中重要的组成部分,通过它可以衍生出众多的与位置相关的应用. Android的GPS有一个专门的管理类,称为LocationManager,所有的GPS定位服务都由其对象产生并进行控制. 首先需要明确的是,LocationManager类的对象获取并不是直接创建的,而是由系统提供的,具体来说,通过如下方法,为一个LocationManager对象建立一个对象引用: 复制代码 代码如下:

Android 实现永久保存数据的方法详解_Android

背景:在Android中按照数据保存的方式,可以分为如下几种Content Provider (用的SQLite实现),SQLite,SharedPreferences(用的XML实现),文件,网络等方式. 今天在项目中,需要做一个永久保存的数据,保存到本地.于是测试了这几种保存方式.其中:SharedPreferences.SQLite.Content Provider 会在[设置]--[应用管理]--点击[清除数据]的时候,会删除文件.所以不安全.文件系统:如果SD卡坏了,或者拔掉的时候也会

mysql中的外键使用详解

mysql中MyISAM和InnoDB存储引擎都支持外键(foreign key),但是MyISAM只能支持语法,却不能实际使用.下面通过例子记录下InnoDB中外键的使用方法: 创建主表: mysql> create table parent(id int not null,primary key(id)) engine=innodb; Query OK, 0 rows affected (0.04 sec) 创建从表: mysql> create table child(id int,pa

jQuery中deferred对象使用方法详解_javascript技巧

在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数.同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象. 那就来看看deferred对象的用法.1.ajax的链式回调  // ajax方法返回的是一个deferred对象,可以直接使用链式写法 $.ajax('test.json').done(function(resp){ // done 相当于success回调,其中默认的参数为success回调的

JavaScript中this关键字使用方法详解

javascript|关键字|详解 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的.JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要"混乱"的多了.     下面就来看看,在JavaScript中各种this的使用方法有什么混乱之处?     1.在HTML元素事件属性中inline方式使用this关键字:  <div

javascript中定义类的方法详解

 这篇文章主要详细介绍了javascript中定义类的方法的相关资料,需要的朋友可以参考下     JS中定义类的方式有很多种: 1.工厂方式   代码如下: function Car(){ var ocar = new Object; ocar.color = "blue"; ocar.doors = 4; ocar.showColor = function(){ document.write(this.color) }; return ocar; } var car1 = Car(