Android之網路編程利用PHP操作MySql插入數據(四)

来源:http://www.cnblogs.com/bingbingliang-xiaomonv/archive/2016/03/19/5294559.html
-Advertisement-
Play Games

因為最近在更新我的項目,就想著把自己在項目中用到的一些的簡單的與網路交互的方法總結一下,所以最近Android網路編程方面的博文會比較多一些,我儘量以最簡單的方法給大家分享,讓大家明白易懂。如果有什麼不對的地方,還請大家留言指出。 這次是利用PHP操作MySql,將Android上面輸入的數據插入到


  因為最近在更新我的項目,就想著把自己在項目中用到的一些的簡單的與網路交互的方法總結一下,所以最近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,這是最普遍的,一般不會出現問題。

  本人的水平有限,就先寫這些了,如果有什麼問題,或者更好的方法,還需要大神留言。我感激不盡。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我的博客: "http://bigdots.github.io" 、 "http://www.cnblogs.com/yzg1/" 繼承有什麼好處?很簡單,繼承了你爸的財產,自己就可以少奮鬥點嘛。開玩笑,言歸正傳,繼承使子類擁有超類的作用域、屬性與方法,可以節省程式設計的時間。ECMAScript實
  • 問題: 在做即時通訊時,需要提示用戶有幾條未讀的提醒,這個是(如果有新的提示消息立馬在瀏覽器無刷新提示)即時獲取的。但我們的做法是,當用戶點擊未讀信息進入到信息顯示頁面時重新獲取下未讀的提醒;但是在IE瀏覽器下,在新視窗打開以後沒有重新獲取請求,再次刷新頁面也沒有看到請求地址。但是如果將鏈接打開方式
  • "Whenever this property changes, apply that change slowly." The property transition: width 2s says “when the width changes, animate it over the course
  • 分類:C#、Android、VS2015; 創建日期:2016-03-19 一、簡介 Android系統定義了一系列獨立的圖形處理類,其中,2D圖形處理類分別位於以下命名空間: Android.Graphices Android.Graphics.Drawable.Shapes Android.Vi...
  • 1.安卓中文件的數據存儲實例(將文件保存到手機自帶存儲空間中): ①MainActivity.java public class MainActivity extends Activity implements OnClickListener{ private Button mButton; pri
  • 最好不要在UIViewController的loadView方法中改變狀態欄的可視性(比如狀態欄由顯示變為隱藏、或者由隱藏變為顯示),因為這樣的操作會導致重覆調用2次loadView和viewDidLoad方法。 雖然運行效果是對的,但是系統連續調用了2次loadView和viewDidLoad方法
  • 猴年支付寶可算是給大家一個很好的驚喜,刺激。大家都在為敬業福而四處奔波。可是到最後也沒有幾個得到敬業福德,就像我。不知道大家有沒有觀察,五福界面的滾動是一個很好的設計。在這裡,給大家帶來簡單的滾動實現,首先看一下實現效果。 通過觀察不難發現,有很多地方並不是那麼容易想出來的,對於篇隨筆,感興趣可以查
  • 1、界面 2、MainActivity代碼,用來響應button代碼 3、http請求同步代碼 4、把輸入流轉換為字元串 5、清單文件 <uses-permission android:name="android.permission.INTERNET"/>//許可權 最後:一般來說,子線程是無法改變
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...