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

    作者:课课家教育更新于: 2019-04-28 15:01:03

      今天给大家介绍如何在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文件,文件内容如下:

      

      $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);

      ArrayListnameValuePairs=newArrayList();

      //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

      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

      

      

      android:layout_width="fill_parent"

      android:layout_height="fill_parent"

      android:orientation="vertical">

      

      android:id="@+id/button1"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="click"/>

      

      android:id="@+id/editView"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="HI"

      android:textSize="30dip"/>

      

      AndroidManifest.xml

      

      

      package="com.knight.android.test"

      android:versionCode="1"

      android:versionName="1.0">

      

      android:icon="@drawable/ic_launcher"

      android:label="@string/app_name">

      

      android:name=".AndroidTestActivity"

      android:label="@string/app_name">

      

      

      

      

      

      

      

      

      

      5.运行结果如下图:

      Android通过PHP连接MySQL(读取)

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

      Android通过PHP连接MySQL(读取)

      注意:

      (1)AndroidManifest.xml中不能出现这种属性,否则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得方法,大家学会了么?

课课家教育

未登录