初学者,(没学过java,也没学过php , 还没学过mysql),凭着仅有的一点C语言基础,傻头傻脑的就干起来了。
走了很多弯路,也没有人教,真艰辛啦!
想知道android 怎么和mysql连接的,phpstudy ( 集成了mysql 和apache) + eclipse平台(as还在过渡期,电脑配置low!)
源码:http://download.csdn.net/detail/zhenzhen9310/9493224
1. 新建new 数据库,新建一个表格collection ,collection.sql文件如下
CREATE TABLE IF NOT EXISTS `collection` (
`collectid` int(11) NOT NULL AUTO_INCREMENT,
`sid` int(11) NOT NULL,
`pname` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`collectid`,`pname`,`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;
INSERT INTO `collection` (`collectid`, `sid`, `pname`) VALUES
(1, 1, 'lisi'),
(2, 2, 'zhangsan');
2. 在服务器根目录(WWW)下新建一个test.php文件,文件内容如下:(添加注释的地方请自行修改)
<?php
$link=mysql_connect("127.0.0.1","root","zhen"); //ip地址,用户名和密码
mysql_query("SET NAMES utf8");
mysql_select_db("new",$link); //数据库名
$sql=mysql_query("select * from collection ",$link); //表名
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>
3. 新建一个Android Java Project
<!-- <uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" /> --> //屏蔽掉
android:minSdkVersion="14"
android:targetSdkVersion="19" /> --> //屏蔽掉
<uses-permission android:name="android.permission.INTERNET"/> //允许网络访问权限
主要程序
// http get
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(
"http://192.168.0.108/new/collection .php"); //ip地址不能设置为127.0.0.1, 手机上设置为电脑的ip地址,模拟器可以用android内置IP 10.0.2.2
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection" + e.toString());
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.d("log_tag", result); //获取的所有数据
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// paring data
int ct_id;
String ct_name;
try {
jArray = new JSONArray(result);
JSONObject json_data = null;
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
ct_id = json_data.getInt("sid"); //将键值对取出来
ct_name = json_data.getString("pname"); //将键值对取出来
tv.append(ct_name + " \n");
}
} catch (JSONException e1) {
// Toast.makeText(getBaseContext(), "No City Found"
// ,Toast.LENGTH_LONG).show();
} catch (ParseException e1) {
e1.printStackTrace();
}
php文件打开如图所示:
点击click以后,Android会向服务器发送一个Http Get请求,服务器从mysql中读取数据后,传送给Android客户端,客户端编码数据包,然后返回如下结果:
参考自:http://blog.sina.com.cn/s/blog_6923201d01011t6h.html#post