1. Android 通过 PHP连接和读取MySQL中的数据
1. 在Android设备中安装 KSWEB,就自动安装好了phpMyAdmin 和 MySQL环境。
服务器URL访问地址为:1. http://localhost:8080/   2. http://192.168.0.108:8080/
在浏览器中输入:http://192.168.0.108:10000 进入phpMyAdmin,登录后进入mysql数据库,新建一张people表,并插入一些数据。
2.  写一个连接和访问 mysql的php程序getPeople.php,并把它放到 /mnt/sdcard/htdocs 目录下。
<?php      $odb_conn=mysql_connect('localhost','root','root');      mysql_query("SET NAMES utf8");    mysql_select_db('mysql',$odb_conn);      $q=mysql_query("SELECT * FROM people WHERE birthyear>'".$_REQUEST['year']."'");      while($e=mysql_fetch_assoc($q))          $output[]=$e;          print(json_encode($output));          mysql_close();  ?>  

要是我们通过采用UTF-8的PHP程序从数据库里读取数据,很有可能是一串“?????”或者是其他乱码。
解决办法是,在连接数据库之后,读取数据之前,先执行一项查询“SET NAMES UTF8”,即在PHP里为
mysql_query("SET NAMES UTF8");    
//该句话一定要放在数据库服务器连接语句【$connection=mysql_connect($db_host,$db_user,$db_psw)or die("连接服务器失败");】之后
即可显示正常(只要数据库里信息的字符正常)。
在浏览器中输入:http://192.168.0.108:8080/php/getPeople.php
会显示得到的数据:
[{"id":"1","name":"\u5feb\u5200\u738b\u4e94","sex":"1","birthyear":"1999"},{"id":"7","name":"\u674e\u76f8","sex":"0","birthyear":"1998"},{"id":"5","name":"\u5f20\u4e09","sex":"0","birthyear":"1556"},{"id":"8","name":"\u738b\u5c0f\u4e8c","sex":"0","birthyear":"2000"}]
3.Android程序
public class PhpSqlActivity extends Activity {private JSONArray jArray;private String result = "";private InputStream is = null;private StringBuilder sb = null;private Button button;private EditText editText;private String path = "http://192.168.0.108:8080/php/getPeople.php";protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.sql_con);button = (Button) this.findViewById(R.id.button1);editText = (EditText) this.findViewById(R.id.editView);button.setOnClickListener(mylistner);}public OnClickListener mylistner = new OnClickListener() {public void onClick(View v) {new Thread(new SQLThread()).start();}};public class SQLThread implements Runnable {public void run() {// 首先使用NameValuePair封装将要查询的年数和关键字绑定result = getHttpResponse();// 将String通过JSONArray解析成最终结果try {JSONArray jArray = new JSONArray(result);for (int i = 0; i < jArray.length(); i++) {JSONObject json_data = jArray.getJSONObject(i);Log.i("log_tag", "id: " + json_data.getInt("id")+ ", name: " + json_data.getString("name")+ ", sex: " + json_data.getInt("sex")+ ", birthyear: " + json_data.getInt("birthyear"));}} catch (JSONException e) {Log.e("log_tag", "Error parsing data " + e.toString());}}}public String getHttpResponse() {HttpPost httpRequest = new HttpPost(path);List params = new ArrayList();params.add(new BasicNameValuePair("year", "1980"));try {UrlEncodedFormEntity httpentity = new UrlEncodedFormEntity(params,"utf-8");httpRequest.setEntity(httpentity);// 请求httpRequestHttpClient httpclient = new DefaultHttpClient();try {HttpResponse httpResponse = httpclient.execute(httpRequest);if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {String resultResponse = EntityUtils.toString(httpResponse.getEntity());return resultResponse;}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 执行Post请求} catch (UnsupportedEncodingException e) {e.printStackTrace();}return "";}}
输出结果:


2. 扩展
 1.修改 php 让它可扩展更多功能:
<?php      $connection=mysql_connect('localhost','root','root');      mysql_query("SET NAMES utf8");    mysql_select_db('mysql',$connection);      $result=mysql_query($_REQUEST['sql']);      while($row=mysql_fetch_assoc($result))          $output[]=$row;          print(json_encode($output));          mysql_close($connection);  ?>  
$_REQUEST['sql']  会接收来自HttpPost 或get 方法的请求中 sql的参数。
这里要注意数据库用户权限的问题,可以用SQLyog来创建可以登录的用户。

 php +MySQL +KSWEB Android 应用_第1张图片

2. android 部分
只需要修改 SQL语句就可以实现 操作数据库的功能:
String sql="SELECT * FROM Persons";
List params = new ArrayList();
params.add(new BasicNameValuePair("sql", sql));

这样就可以实现查询的功能。
是不是很简单啊。。。

例:
本工程采用MySQL+php+Android,完成了对在Android中对MySQL的增删改查功能,并在ListView上显示操作的结果。
源码地址:http://download.csdn.net/detail/ymangu/7941223


更多相关文章

  1. Android 监听ContentProvider中数据的变化
  2. Android提交数据到服务的四种方法!!!
  3. 【android】Cursor记录集游标、ListView和SimpleCursorAdapter、
  4. 【Android开发学习07】存储简单数据的利器--Preferences
  5. android 数据库建立以及自定义ContentProvider
  6. android 客户端与服务端的通信 发送get和post请求并获取数据
  7. Android SQLite 数据库 增删改查操作
  8. android 存储数据与文件

随机推荐

  1. 分布式系统架构常见知识点梳理
  2. the-super-tiny-compiler源码解析
  3. android布局属性使用说明和一些开发经验
  4. Android知识巩固—四大组件能否开多进程
  5. java技术栈常规面试题汇总(自己在2021届校
  6. Backend For Frontend (BFF)
  7. Unity与Android之间的交互之AndroidManif
  8. 面试必问:布隆过滤器的原理以及使用场景
  9. 一个Android登陆的简单实现
  10. Android下affinities和任务(task)