早上上班的时候做的一个程序,一直想连接数据库的,终于做好了,然后又看了一点解析JSON加了上去。
贴出PHP代码,PHP环境是用WAPPSERVER搭建的。
//PHP好像不能直接贴上来,不知道是我网络还是本来就是这样,反正我把头去了。
$link=mysql_connect("127.0.0.1","root","");
mysql_query("SET NAMES
utf8");
mysql_select_db("testlogin",$link);
$sql=mysql_query("select *
from login ",$link);
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
//尾也去了,要的自己加上。
很简单的返回了JSON数据。
返回的样子是这样的。
[{"ID":"1","username":"admin","password":"admin","phone":"1232154","email":"135454@qq.com","address":"d;lfk;sdlkf;lsdk"},{"ID":"2","username":"admin18","password":"01sf4sdf89","phone":"1825555555","email":"555555","address":"dfsdfewrsdwer"},{"ID":"0","username":"213123","password":"213123213","phone":"\u90d1\u6cbb\u7384","email":"\u4e2d\u6587\u5b57\u7b26","address":"\u8d35\u9633\u54ea\u513f"}]
接下来就是对这样的数据做解析。这就是安卓端的问题。还是把代码贴出来吧。
public class MainActivity extends Activity
{
private static Handler handler = new
Handler();
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
testMYSQL("http://10.0.2.2/select.php");//
联网要在子线程里做
}
});
}
}).start();
}
public void testMYSQL(String connectUrl)
{
String resultString;
HttpGet httpRequest = new
HttpGet(connectUrl);
try {
HttpResponse httpResponse = new
DefaultHttpClient()
.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode()
== 200) {
// 第一种方法取出字符串
//resultString =
EntityUtils.toString(httpResponse.getEntity());
// 第二种方法取出字符
StringBuilder builder = new
StringBuilder(); BufferedReader
bufferedReader2 = new
BufferedReader( new
InputStreamReader(httpResponse.getEntity().getContent()));
for (String s =
bufferedReader2.readLine(); s != null; s =
bufferedReader2 .readLine()) {
builder.append(s); }
// 这里需要分析服务器回传的json格式数据,
// 第一种方法解析数据
//JSONArray jsonArray = new
JSONArray(resultString);
// 第二种方法解析数据
JSONArray jsonArray = new
JSONArray(builder.toString());
for (int i = 0; i < jsonArray.length(); i++)
{
JSONObject jsonObject =
jsonArray.getJSONObject(i);
//
在这里想办法把数据读取出来,然后存储在什么地方,我这里新建了一个类有get和set,存到类里,
// 自己想办法存,可以先输出看看结果,再想法存储。
System.out.println(jsonObject.getString("username"));//输出测试
}
}
}
catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
catch (ClientProtocolException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
catch (JSONException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
没有什么难的,看看就能明白的。最后再说一点的就是。
android:minSdkVersion="8"
android:targetSdkVersion="18" />
在androidmanifest.xml里面不能出现这两句,否则远程调试服务器的时候就会出问题。
好吧,应该就这样了。