我目前正在构建一个android应用程序,并且我在线上已经看到了很多有关如何在android中以列表视图形式返回数据库数据行的建议,但我只是想返回一个字段。
基本上,用户使用其用户名和密码登录。每个用户名都是唯一的。
在下一个屏幕上,我需要一个textView来显示其真实姓名,该姓名是根据用户名从db表中获取的,但是我正在努力寻找方法。
有什么建议吗?
谢谢!
编辑:
php文件如下:
<?php
$user="";
$server="";
$db="";
$password=""; [I have removed these to share this]
$conn=mysqli_connect($server, $user, $password, $db);
$query="SELECT * FROM rest_users WHERE username = 'XXX'";
$result= mysqli_query($conn, $query) or die('error: '+mysql.error());
$response = array();
while($row = mysqli_fetch_array($result)){
array_push($response, array("name"=>$row[1], "table"=>$row[5]));
}
echo json_encode(array("server_response"=>$response));
mysqli_close($conn);
“ XXX”显然是我希望用户名来自登录屏幕中输入的详细信息的地方。
下面是我要显示名称的活动中的相关代码:
public void getJSON(View view){
new BackgroundTask().execute();
}
class BackgroundTask extends AsyncTask<Void, Void, String> {
String jsonurl;
String JSON_STRING;
@Override
protected void onPreExecute() {
jsonurl = "http://mgourley03.web.eeecs.qub.ac.uk/RestaurantApp/json/jsongetdata.php";
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(jsonurl);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
while((JSON_STRING = bufferedReader.readLine()) !=null){
stringBuilder.append(JSON_STRING+"\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(result);
json_string = result;
}
}
public void parseJSON(View view){
if(json_string==null){
Toast.makeText(getApplicationContext(),"First get JSON", Toast.LENGTH_LONG).show();
} else {
Intent intent = new Intent(this, CustomerHomeScreen.class);
intent.putExtra("json_data", json_string);
startActivity(intent);
}
}
我本来是在关注在线教程,但是它将返回列表视图中的所有值,这不是我想要的。我希望有另一种方法可以使用用户名从表中返回用户名(我在登录活动中使用intent.putExtra对此进行了传递)