下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何在Android系统上通过php连接mysql?

作者:课课家教育     来源: http://www.kokojia.com点击数:1389发布时间: 2019-04-28 15:01:06

标签: 安卓连接mysql数据库php

  今天给大家介绍如何在Android系统通过php连接MySQL?在Android系统通过php连接mysql有两种方法,具体是怎样的流程,请看下面例子。

如何在Android系统上通过php连接mysql?_数据库_php_课课家

  1.通过MySQL在windows下的配置中介绍第二种方法,在服务器机器上配置php和mysql环境,譬如我的服务器机器ip为:10.141.249.136

  2.新建在test数据库下新建一个teacher表,表的内容如下:

  Android通过PHP连接MySQL(读取)

  3.在服务器机器上的phpnow安装目录E:\\PHPnow-1.5.5\\htdocs下新建一个test.php文件,文件内容如下:

  <?php

  $link=mysql_connect("127.0.0.1","root","123456");

  mysql_query("SETNAMESutf8");

  mysql_select_db("test",$link);

  $sql=mysql_query("select*fromteacher",$link);

  while($row=mysql_fetch_assoc($sql))

  $output[]=$row;

  print(json_encode($output));

  mysql_close();

  ?>

  4.新建一个AndroidjavaProject

  需要修改的是一下三个文件:AndroidTestActivity.java、main.xml、AndroidManifest.xml

  //AndroidTestActivity.java

  packagecom.knight.android.test;//根据实际的工程需要,修改包的名称

  importjava.io.BufferedReader;

  importjava.io.InputStream;

  importjava.io.InputStreamReader;

  importjava.util.ArrayList;

  importorg.apache.http.HttpEntity;

  importorg.apache.http.HttpResponse;

  importorg.apache.http.NameValuePair;

  importorg.apache.http.client.HttpClient;

  importorg.apache.http.client.methods.HttpGet;

  importorg.apache.http.impl.client.DefaultHttpClient;

  importorg.json.JSONArray;

  importorg.json.JSONException;

  importorg.json.JSONObject;

  importandroid.app.Activity;

  importandroid.net.ParseException;

  importandroid.os.Bundle;

  importandroid.util.Log;

  importandroid.view.View;

  importandroid.widget.Button;

  importandroid.widget.EditText;

  publicclassAndroidTestActivityextendsActivity{

  JSONArrayjArray;

  Stringresult=null;

  InputStreamis=null;

  StringBuildersb=null;

  @Override

  publicvoidonCreate(BundlesavedInstanceState){

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  Buttonb1=(Button)findViewById(R.id.button1);

  b1.setOnClickListener(newButton.OnClickListener(){

  @Override

  publicvoidonClick(Viewv){

  //TODOAuto-generatedmethodstub

  EditTexttv=(EditText)findViewById(R.id.editView);

  ArrayList<NameValuePair>nameValuePairs=newArrayList<NameValuePair>();

  //httpget

  try{

  HttpClienthttpclient=newDefaultHttpClient();

  HttpGethttpget=newHttpGet(

  "http://10.141.249.136/test.php");

  HttpResponseresponse=httpclient.execute(httpget);

  HttpEntityentity=response.getEntity();

  is=entity.getContent();

  }catch(Exceptione){

  Log.e("log_tag","Errorinhttpconnection"+e.toString());

  }

  //convertresponsetostring

  try{

  BufferedReaderreader=newBufferedReader(

  newInputStreamReader(is,"iso-8859-1"),8);

  sb=newStringBuilder();

  sb.append(reader.readLine()+"\\n");

  Stringline="0";

  while((line=reader.readLine())!=null){

  sb.append(line+"\\n");

  }

  is.close();

  result=sb.toString();

  }catch(Exceptione){

  Log.e("log_tag","Errorconvertingresult"+e.toString());

  }

  //paringdata

  intct_id;

  Stringct_name;

  try{

  jArray=newJSONArray(result);

  JSONObjectjson_data=null;

  for(inti=0;i<jArray.length();i++){

  json_data=jArray.getJSONObject(i);

  ct_id=json_data.getInt("id");

  ct_name=json_data.getString("name");

  tv.append(ct_name+"\\n");

  }

  }catch(JSONExceptione1){

  //Toast.makeText(getBaseContext(),"NoCityFound"

  //,Toast.LENGTH_LONG).show();

  }catch(ParseExceptione1){

  e1.printStackTrace();

  }

  }

  });

  }

  }

  layout/main.xml

  <?xmlversion="1.0"encoding="utf-8"?>

  <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:orientation="vertical">

  <Button

  android:id="@+id/button1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="click"/>

  <EditText

  android:id="@+id/editView"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="HI"

  android:textSize="30dip"/>

  </LinearLayout>

  AndroidManifest.xml

  <?xmlversion="1.0"encoding="utf-8"?>

  <manifestxmlns:android="http://schemas.android.com/apk/res/android"

  package="com.knight.android.test"

  android:versionCode="1"

  android:versionName="1.0">

  <application

  android:icon="@drawable/ic_launcher"

  android:label="@string/app_name">

  <activity

  android:name=".AndroidTestActivity"

  android:label="@string/app_name">

  <intent-filter>

  <actionandroid:name="android.intent.action.MAIN"/>

  <categoryandroid:name="android.intent.category.LAUNCHER"/>

  </intent-filter>

  </activity>

  </application>

  <!--授权访问网络-->

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

  </manifest>

  5.运行结果如下图:

  Android通过PHP连接MySQL(读取)

  点击click以后,Android会向服务器发送一个HttpGet请求,服务器从mysql中读取数据后,传送给Android客户端,客户端编码数据包,然后返回如下结果:

  Android通过PHP连接MySQL(读取)

  注意:

  (1)AndroidManifest.xml中不能出现<uses-sdkandroid:minSdkVersion="15"/>这种属性,否则Android客户端无法连接到远程服务器

  (2)如果在本机搭建mysql和php环境,以上程序(AndroidTestActivity.java)中红色部分应更改为:

  HttpGethttpget=newHttpGet("http://10.0.2.2/test.php");

  127.0.0.1表示手机的本机ip,因为程序最终是在手机上跑的

  (3)如果读者自定义的工程,需要修改一下几个地方:

  第一个是AndroidTestActivity.java程序里面的package名称packagecom.knight.android.test;这个根据读者自己定义的包要做出相应的修改(绿色部分)

  第二个是修改AndroidManifest.xml里面第三行的package="com.knight.android.test",要保持绿色部分和第一条中的绿色部分相对应

  第三点是修改AndroidManifest.xml里面activity下面的android:name=".AndroidTestActivity",将绿色部分修改为AndroidTestActivity.java的红色部分(也就是类名)

  (4)在MySQL中把编码设置成utf8_unicode_ci,在浏览器中输入:localhost/test.php,如果中文出现乱码,可以把输出的内容复制到http://tools.jb51.net/tools/json/json_editor.htm,如果在这里能显示正常,则说明实际上是的对的,因为浏览器输出的是json编码。

  以上就在Android系统通过php连接mysql得方法,大家学会了么?

赞(12)
踩(1)
分享到:
华为认证网络工程师 HCIE直播课视频教程