我想以最快的方式从外部数据库获取数据。我的问题是我可以进行查询并获取所有数据然后使用JSON我能够获得我需要的东西。但我很好奇是否有更快的解决方案,所以我浏览了php中的所有数据,然后找到我需要的相应数据并仅将其返回到JSON而不是整个查询。当我需要100万个记录时,第一个解决方案可能会很慢。
如果是ID,这将是.php代码,用于查找用户名。如何将该ID提供给.php脚本?
$ID = $_GET['ID'];
try {
$stmt = $conn->prepare("SELECT USERNAME FROM APPUSERS WHERE ID=?");
$stmt -> execute(array($id));
while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$userdata[] = $row;
}
$response = '1';
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
$response = '0';
}
print(json_encode($userdata));
如果我删除了sql代码的WHERE部分,我可以使用以下代码获取表中的所有记录:
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.mywebpage.com/query.php");
HttpResponse response = httpclient.execute(httppost);
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);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
Bresult=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
然后从这个Bresult变量中我得到了适当的记录,例如
JSONArray jArray = new JSONArray(ViewPagerActivity.Bresult);
for(int i=0;i<jArray.length();i++){
JSONObject jsonObject = innerJsonArray.getJSONObject(j);
if (jsonObject.getString("ID").equals("12345") {
String user = jsonObject.getString("USERNAME");
}
}
所以我浏览了所有记录,然后检索我需要的用户名。 但是,如果我只能检索我需要的用户名而不是所有记录,我认为这可以更快。问题是,我该怎么做?
提前谢谢!!