0

我想以最快的方式从外部数据库获取数据。我的问题是我可以进行查询并获取所有数据,然后使用 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");
  }
}

所以我浏览了所有记录,然后检索我需要的用户名。但是,如果我只能检索我需要的用户名而不是所有记录,我认为这可以更快。问题是,我该怎么做?

先感谢您!!

4

0 回答 0