要用php对百度云数据库进行操作的话,都要先通过php文件连接到百度云,连接云数据库的php文件名是conn,内容如下:
<?php //echo "这是php数据库访问层!"; $dbhost = "sqld.duapp.com:4050"; $dbuser = ""; //我的用户名 $dbpass = ""; //我的密码 $dbname = ""; //我的mysql库名 $cn = mysql_connect($dbhost,$dbuser,$dbpass) or die("connect error"); @mysql_select_db($dbname)or die("db error"); mysql_query("set names 'UTF8'"); mysql_query("set character_set_client=utf8"); mysql_query("set character_set_results=utf8"); ?>
用户登录:
php文件,其中User表是在百度云数据库中创建的。
<?php include ("conn.php"); $id=str_replace(" ","",$_POST['id']);//id为登录账号 $pwd=str_replace(" ","",$_POST['pwd']);//pwe为登录密码 $sql="select * from User where Uid='$id' and pwd='$pwd'"; $query=mysql_query($sql); $rs = mysql_fetch_array($query); if(is_array($rs)){ echo 'OK'; }else echo 'illegal user'; ?>
ArrayList<BasicNameValuePair> list=new ArrayList<BasicNameValuePair>(); list.add(new BasicNameValuePair("id", et_accounts.getText().toString())); list.add(new BasicNameValuePair("pwd", et_password.getText().toString())); String flag=CloudConnection.gotoLogin(loginuri, list);
如果登录成功那么flag的值为‘OK’,否则flag为'illegal user'。
多条查询,例如从云数据库中查找表中所有的微博,表的字段为:
Mbid:微博id
Mbuid:发表此微博的用户id
Mbcontent:微博内容
Mbtime:发表微博的时间
Mbnumzan:赞此微博的数目
Mbnumping:评论此微博的数目
picName:发表的图片的名字
那么php文件就是:
<?php include ("conn.php");//连接数据库 $sql="SELECT * FROM Microblog,User where Microblog.Mbuid=User.Uid"; $rs=mysql_query($sql); $user = array(); while($row = mysql_fetch_array($rs)) { $Mbid = $row['Mbid']; $Mbuid = $row['Mbuid']; $Mbcontent = $row['Mbcontent']; $Mbtime=$row['Mbtime']; $Mbnumzan = $row['Mbnumzan']; $Mbnumping = $row['Mbnumping']; $nickname = $row['nickname']; $iName = $row['iName']; $picName = $row['picName']; $ary = array( Mbid => $Mbid , Mbuid => $Mbuid, Mbcontent =>$Mbcontent, Mbtime => $Mbtime, Mbnumzan => $Mbnumzan, Mbnumping => $Mbnumping, nickname=> $nickname, iName=>$iName, picName=>$picName ); array_push($user,$ary); } $users['Microblog']=$user; echo json_encode($users); ?>
因为php返回的是一个对象数组,所以要对php中从云数据库获得的数据进行解析,解析之后的数据存在list中。
public class Microblog_DB { String sendUri="https://oursvn.duapp.com/query_microblog.php";//sendUri为你php文件的路径 public List<Map<String, Object>> getData() { List<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); StringBuilder builder = new StringBuilder(); HttpPost httpRequest = new HttpPost(sendUri); try{ HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);//发出HTTP请求,<span style="font-family: Arial, Helvetica, sans-serif;">取得HTTP response</span> <span style="white-space:pre"> </span>    <span style="white-space:pre"> </span>//若状态码为200则请求成功,取到返回数据 BufferedReader reader = new BufferedReader(new InputStreamReader( httpResponse.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader.readLine()) { builder.append(s); } String jsonString = builder.toString(); jsonString = jsonString.substring(jsonString.indexOf("{"),jsonString.lastIndexOf("}")+1); JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray("Microblog");//Microblog要去php中<span style="font-family: Arial, Helvetica, sans-serif;">$users['Microblog']=$user的Microblog名称一致</span> for(int i=0;i<jsonArray.length();i++){ JSONObject jsonObject1 =(JSONObject) jsonArray.get(i); int Mbid= jsonObject1.getInt("Mbid"); String Mbuid= jsonObject1.getString("Mbuid"); String Mbcontent= jsonObject1.getString("Mbcontent"); String Mbtime= jsonObject1.getString("Mbtime").toString().substring(5, 16); String Mbnumzan= jsonObject1.getString("Mbnumzan"); String Mbnumping= jsonObject1.getString("Mbnumping"); String nickname=jsonObject1.getString("nickname"); String iName=jsonObject1.getString("iName");//头像名称 String picName=jsonObject1.getString("picName");//图片名称 Map<String, Object>map = new HashMap<String, Object>(); map.put("zan",R.drawable.zan); map.put("ping",R.drawable.ping); map.put("head",R.drawable.tou12 ); map.put("nickname", nickname); map.put("content", Mbcontent); map.put("sendtime", Mbtime); map.put("zannum", Mbnumzan); map.put("pingnum", Mbnumping); map.put("mbid", String.valueOf(Mbid)); list.add(map); } }catch(Exception e){ e.printStackTrace(); } return list; } }