Android之网络编程利用PHP操作MySql插入数据(四)

  因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂。如果有什么不对的地方,还请大家留言指出。

  这次是利用PHP操作MySql,将Android上面输入的数据插入到MySql中,这里我已经给大家写好了PHP端的代码,如果大家想要自己测试,只需要将php端的代码复制即可,Android端的代码得换包。OK,下面我先给大家贴出来效果图:

Android端:

MySql数据库:

执行程序之后的数据库:

Android端的代码:

MainActivity类:

 1 package com.example.insertphp;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import org.apache.http.NameValuePair;
 7 import org.apache.http.message.BasicNameValuePair;
 8 import org.json.JSONObject;
 9 
10 import android.app.Activity;
11 import android.os.Bundle;
12 import android.os.StrictMode;
13 import android.util.Log;
14 import android.view.View;
15 import android.view.View.OnClickListener;
16 import android.widget.Button;
17 import android.widget.EditText;
18 
19 public class MainActivity extends Activity {
20 
21     //声明接口地址
22     private String url = "http://10.17.64.8:8080/testregister/register.php";
23     
24     private String a;
25     private String b;
26     
27     private EditText et1;
28     private EditText et2;
29     private Button btn;
30     
31     
32     
33     @Override
34     protected void onCreate(Bundle savedInstanceState) {
35         super.onCreate(savedInstanceState);
36         setContentView(R.layout.activity_main);
37         
38         et1 = (EditText) findViewById(R.id.edtv);
39         et2 = (EditText) findViewById(R.id.edt);
40         btn = (Button) findViewById(R.id.bt);
41         
42         btn.setOnClickListener(new OnClickListener() {
43             
44             @Override
45             public void onClick(View arg0) {
46                 
47                 List<NameValuePair> params = new ArrayList<NameValuePair>();
48                 //获取输入框中的内容
49                 a = et1.getText().toString();
50                 b = et2.getText().toString();
51                 
52                 //替换键值对,这里的键必须和接口中post传递的键一致
53                 params.add(new BasicNameValuePair("name", a));
54                 params.add(new BasicNameValuePair("password", b));
55                 
56                 JSONParser jsonParser = new JSONParser();
57                 
58                 try{   
59                     JSONObject json = jsonParser.makeHttpRequest(url,"POST", params);
60                     Log.v("uploadsucceed", "uploadsucceed");   
61                   
62                 }catch(Exception e){   
63                     e.printStackTrace(); 
64                 }   
65                 
66                 
67                 System.out.println("输入的第一个内容:" + a);
68                 System.out.println("输入的第二个内容:" + b);
69                 
70             }
71         });
72         
73         //下面的代码是必须加上的,具体的意义还需要大家去探索吧,这里不是主要讲的
74         
75         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()    
76         .detectDiskReads()    
77         .detectDiskWrites()    
78         .detectNetwork()   // or .detectAll() for all detectable problems    
79         .penaltyLog()    
80         .build());    
81         
82         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()    
83         .detectLeakedSqlLiteObjects()    
84         .detectLeakedClosableObjects()    
85         .penaltyLog()    
86         .penaltyDeath()    
87         .build());   
88         
89     }
90 
91 }

注意:这里的接口地址是我个人的本地服务器的地址,你如果在自己电脑上测试必须更改地址,查看自己本地的地址方法:win键+R 然后输入cmd,之后在执行框中输入ipconfig/all,在执行之后的结果中招IPv4就可以了。testregister是我的项目包,register.php是我的php文件。

特别注意:在将数据添加在list中时,键值对中的键名必须与接口中POST传递的名称一致才可以,不然会出现空数据的情况。

下面的代码是使用网络编程连接服务端的,其中里面代码的意义我在http://www.cnblogs.com/bingbingliang-xiaomonv/p/5247223.html已经介绍过。

JSONParser类代码:

 1 package com.example.insertphp;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.UnsupportedEncodingException;
 8 import java.util.List;
 9 
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.NameValuePair;
13 import org.apache.http.client.ClientProtocolException;
14 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 import org.apache.http.client.methods.HttpPost;
16 import org.apache.http.impl.client.DefaultHttpClient;
17 import org.apache.http.protocol.HTTP;
18 import org.json.JSONException;
19 import org.json.JSONObject;
20 
21 import android.util.Log;
22 
23 public class JSONParser {
24 
25     static InputStream is = null;   
26     static JSONObject jObj = null;   
27     static String json = "";   
28     // constructor   
29     public JSONParser() {   
30     }     
31     public JSONObject makeHttpRequest(String url, String method,   
32     List<NameValuePair> params) {   
33         // Making HTTP request   
34         try {   
35             //使用POST请求 
36             DefaultHttpClient httpClient = new DefaultHttpClient();   
37             HttpPost httpPost = new HttpPost(url);   
38             httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));   
39             HttpResponse httpResponse = httpClient.execute(httpPost);   
40             HttpEntity httpEntity = httpResponse.getEntity();   
41             is = httpEntity.getContent();   
42         } catch (UnsupportedEncodingException e) {   
43             e.printStackTrace();   
44         } catch (ClientProtocolException e) {   
45             e.printStackTrace();   
46         } catch (IOException e) {   
47             e.printStackTrace();   
48         }   
49         try {   
50             BufferedReader reader = new BufferedReader(new InputStreamReader(   
51             is, "UTF-8"));   
52             StringBuilder sb = new StringBuilder();   
53             String line = null;   
54             while ((line = reader.readLine()) != null) {   
55             sb.append(line + "\n");
56         }   
57             is.close();   
58             json = sb.toString();   
59         } catch (Exception e) {   
60             Log.e("Buffer Error", "Error converting result " + e.toString());   
61             Log.d("json", json.toString());   
62         }   
63             //转变为Json类型   
64         try {   
65             jObj = new JSONObject(json);   
66         } catch (JSONException e) {   
67             Log.e("JSON Parser", "Error parsing data " + e.toString()); 
68         }   
69             // return JSON String   
70             return jObj;   
71     }   
72     
73 }

注意:必要忘了在配置文件添加访问网络权限的代码:

 1 <uses-permission android:name="android.permission.INTERNET"/> 

布局代码XML:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/LinearLayout1"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     tools:context=".MainActivity" >
 8 
 9 
10     <EditText
11         android:id="@+id/edtv"
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:ems="10" >
15 
16         <requestFocus />
17     </EditText>
18 
19     <EditText
20         android:id="@+id/edt"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:ems="10" />
24 
25     <Button
26         android:id="@+id/bt"
27         android:layout_width="wrap_content"
28         android:layout_height="wrap_content"
29         android:text="提交" />
30 
31 </LinearLayout>

 

服务端代码:

Conn.php(连接数据库的代码):

 1 <?php
 2     //连接本地数据库localhost以及数据库账户root密码为空
 3     $con = mysql_connect("localhost","root","");
 4 
 5     //设置字符集
 6     mysql_query("SET NAMES 'utf8'");
 7     mysql_query("SET CHARACTER SET utf8");
 8 
 9     if(!$con){
10         die(mysql_error());
11     }
12     mysql_select_db("testregister",$con);
13     // echo "测试成功";
14 
15 ?>

操作数据库的代码:

register.php:

 1 <?php
 2     
 3     require 'Conn.php';
 4 
 5     $response = array();
 6 
 7     //注意:这里的POST传递的name必须和android端的键一致,否则不会插入数据
 8     if(isset($_POST['name'])){
 9         $nickname = $_POST['name'];
10         $password = $_POST['password'];
11         //执行Mysql插入语句
12         $query = mysql_query("INSERT INTO test_register(nickname,password) VALUES ('$nickname','$password')");
13     // echo $query;
14     // echo "测试query";
15         if ($query) {   
16                 // successfully inserted into database   
17                 $response["success"] = 1;   
18                 $response["message"] = "Product successfully created.";   
19                 echo json_encode($response);   
20                       
21                 } else {   
22                     // failed to insert row   
23                     $response["success"] = 0;   
24                     $response["message"] = "Oops! An error occurred.";   
25                     // echoing JSON response   
26                     echo json_encode($response);   
27                 }   
28 
29     }
30 
31 ?>

说明:echo只是为了当时测试用的。

如果在执行程序的过程中Logcat中出现下面情况,就差不多对了。

为了测试方便我使用的是英文,如果有使用中文的,上述代码也可以,如果你的不可以的话,你就更改你的编码方式,我这里是用的UTF-8,这是最普遍的,一般不会出现问题。

  本人的水平有限,就先写这些了,如果有什么问题,或者更好的方法,还需要大神留言。我感激不尽。

转载于:https://www.cnblogs.com/bingbingliang-xiaomonv/p/5294559.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【常用网址】——opencv等

opencv官网Releases - OpenCVhttps://opencv.org/releases/

(五):C++分布式实时应用框架——微服务架构的演进

C分布式实时应用框架——微服务架构的演进 技术交流合作QQ群&#xff1a;436466587 欢迎讨论交流 上一篇&#xff1a;(四)&#xff1a;C分布式实时应用框架——状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有&#xff0c;对于抄袭&#xff0c;非经同意转载等…

Robot Application Builder

软件开发工具包 Robot Application Builder是安装在PC机&#xff08;Windows 2000或Windows XP操作系统&#xff09;上的一种独立开发工具&#xff0c;可用于创建运行于ABB FlexPendant示教器或PC机上的定制化操作界面。为此&#xff0c;该软件包由以下两部分组成&#xff1a;…

asp.net model 验证和取出 ErrorMessage 信息

为什么80%的码农都做不了架构师&#xff1f;>>> public class Users{public int Id { get; set; }public string Name { get; set; }[Required(ErrorMessage "邮箱不能为空")][EmailAddressAttribute(ErrorMessage "邮箱格式不正确")]public…

【pyqt5学习——信号与槽】实例计时器(解决界面卡顿问题)

目录 一、方法一&#xff1a;另开线程 1、什么是信号与槽 1&#xff09;GUI控件&#xff08;信号&#xff09;与槽 2&#xff09;自定义信号与槽 2、实战1&#xff1a;计时器&#xff08;不自定义信号槽和不使用多线程&#xff09; 1&#xff09;界面设计——利用qt-desi…

【数据库学习笔记】——创建数据库连接对象connection

目录 connect函数的参数 创建连接对象连接MySQL代码 连接对象常见属性与方法 事务名词解释 课程视频链接&#xff1a; 第14节 Python操作数据库_哔哩哔哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?fromsearch&seid968950907021994347&spm_id_from3…

【数据库学习笔记】——cursor游标对象

目录 1、创建cursor对象 2、cursor对象常用方法 3、操作数据库的常见流程&#xff08;五部曲&#xff09; 课程视频链接&#xff1a; 第14节 Python操作数据库_哔哩哔哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?p2&spm_id_frompageDriver 1、创建cu…

基于ARM核AT75C220在指纹识别系统中应用

纹识别技术近年来逐渐成熟&#xff0c;在门禁、安防和金融等方面得到了越来越广泛的应用。典型的指纹识别系统是以指纹传感器和DSP处理器为核心构成。指纹传感器采集指纹图像&#xff0c;DSP处理器实时实现指纹识别算法。同时&#xff0c;通常的指纹识别系统还具有较强的通信能…

【数据库学习笔记】——创建数据库文件

目录 1、数据库基础知识 2、创建数据库文件 1、数据库基础知识 什么是数据库&#xff1f;——数据库是存放多个数据表的仓库&#xff0c;数据表可以理解为是二维数组 如上表所示&#xff0c;每个表由行列组成&#xff1a; 字段&#xff1a;每一列称之为一个字段&#xff0c;每…

浅谈工业机器人的运动停止

德系的工业机器人系统中&#xff0c;对于机器人停止运动&#xff0c;定义了3种模式&#xff0c;比如 KUKA 的工业机器人分别定义了 Stop 0 &#xff0c;Stop 1&#xff0c;Stop 2 (*注1)。这种定义模式是与机器人的机械结构和电气结构相关联的。 对于此&#xff0c;读者应该先了…

【数据库学习】——数据库可视化--Navicat下载安装连接教程

目录 进入网站 下载可视化软件 安装 双击桌面图标&#xff0c;选择试用 连接数据库 查看数据库中的表&#xff0c;如下所示 常用数据库有&#xff1a; MySQL、sqlite等 进入网站 Navicat | 产品https://www.navicat.com.cn/products 下载可视化软件 这里以数据库sql…

C# 格式化字符串

原文地址&#xff1a;http://www.cnblogs.com/zyh-nhy/archive/2007/10/11/921240.html 1 前言如果你熟悉Microsoft Foundation Classes&#xff08;MFC&#xff09;的CString&#xff0c;Windows Template Library&#xff08;WTL&#xff09;的CString或者Standard Template …

【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍

目录 1、sqlite数据库介绍 1&#xff09;常见的数据库操作 2&#xff09;数据操作常见步骤 2、向数据表中增加数据&#xff08;insert into&#xff09; 1&#xff09;向数据表中添加一条记录 2&#xff09;向数据表中一次性添加多条记录 ​ 3、修改数据表中已有的数据 1)…

【sqlite常用操作SQL语句】

目录 1、创建一个新的数据表 2、在已有的数据表中增加一个新的字段&#xff08;列&#xff09; 3、 在已有的数据表中增加一条新的记录&#xff08;行&#xff09; 1、创建一个新的数据表 "create table user(id int(11) primary key, name varchar(20))" 含义&…

centos6虚拟机复制后修改网卡

方法1&#xff1a; 使用vmware创建centos6.4虚拟机&#xff0c; 创建完成后复制该虚拟机&#xff0c; 打开复制的虚拟机发现网卡名字是eth1&#xff0c;而网卡配置文件为eth0&#xff0c;mac地址变了 这时修改网卡配置文件&#xff0c; 删除uuid&#xff0c;修改deivce为eth1&a…

【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】

目录 下载pyinstaller库 0、pyinstaller语句介绍 1、单个py文件打包成exe 1)只有py文件 假设只有一个py文件&#xff1a;pyinstaller -F xxx.py 加上图标&#xff1a;pyinstaller -F xxx.py -i xxx.ico 取消命令行窗口:pyinstaller -F -w xxx.py -i xxx.ico 2) 不但有py…

python 中cPickle学习二

写入&#xff1a; import cPickle as p shoplistfile data.data shoplist [meili,[current_account,[100000,1222],basis_account,[5555555,888]],qinshan,[current_account,[1089000,12292],basis_account,[55555955,888]],jiayou,[current_account,[10000,12292],basis_acc…

4.0 多线程基础篇

本文并非最终版本&#xff0c;如有更新或更正会第一时间置顶&#xff0c;联系方式详见文末如果觉得本文内容过长&#xff0c;请前往本人 “简书”4.0-1.1 进程 概念 : 进程是指在系统中正在运行的一个应用程序 (操作系统中每一个 APP 就是一个进程)  性质 : 每个进程之间是独…

【python pandas excel操作】

目录 1、打开Excel&#xff0c;获取不同sheet的名称 2、获取不同sheet的内容 3、 获取行数以及表头 4、对某一列的信息进行筛选 5、根据列号和索引号提取一行或者一列的数据 6、其他panda对Excel的操作 摘自&#xff1a;python对excel操作获取某一列&#xff0c;某一行的值…