php +MySQL +KSWEB Android 应用

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 目录下。
'".$_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);// 请求httpRequest
	HttpClient 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 让它可扩展更多功能:
  
$_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


你可能感兴趣的:(android)