我想以最快的方式从外部数据库获取数据。我的问题是我可以进行查询并获取所有数据,然后使用 JSON 我能够获得我需要的东西。但是我很好奇是否有更快的解决方案,所以我检查了 php 中的所有数据,然后找到我需要的适当数据并将其仅返回到 JSON 而不是整个查询。当我需要一百万条记录时,第一个解决方案可能会很慢。
如果是 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");
}
}
所以我浏览了所有记录,然后检索我需要的用户名。但是,如果我只能检索我需要的用户名而不是所有记录,我认为这可以更快。问题是,我该怎么做?
先感谢您!!