如何使用android通过id从数据库检索数据
我正在使用selectquery和where condition=tid从数据库中检索数据,为此我想知道如何在selectquery中向服务器传递tid。请给我任何解决方案,如何发送服务器上的tid和检索特定tid数据库中的数据。谢谢 一些代码如何使用android通过id从数据库检索数据,android,mysql,listview,Android,Mysql,Listview,我正在使用selectquery和where condition=tid从数据库中检索数据,为此我想知道如何在selectquery中向服务器传递tid。请给我任何解决方案,如何发送服务器上的tid和检索特定tid数据库中的数据。谢谢 一些代码 new GetHttpResponse(this).execute(); listCollege .setOnItemClickListener(new android.widget.AdapterView.OnItemClickListen
new GetHttpResponse(this).execute();
listCollege .setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
TextView tasknameOBJ=(TextView)view.findViewById(R.id.taskname);
TextView taskidOBJ = (TextView)view.findViewById(R.id.tid);
tid = taskidOBJ.getText().toString();
taskname = tasknameOBJ.getText().toString();
Toast.makeText(ListTask.this,"You selected Id is "+tid,Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ListTask.this,GetSubTask.class);
startActivity(intent);
SharedPreferences sharedPreferences = ListTask.this.getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(Config.TID_SHARED_PREF, tid);
editor.putString(Config.TASKNAME_SHARED_PREF, taskname);
//Saving values to editor
editor.commit();
}
});
}
private class GetHttpResponse extends AsyncTask<Void, Void, Void>
{
private Context context;
String result;
List<Task> Task_;
public GetHttpResponse(Context context)
{
this.context = context;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0)
{
HttpService httpService = new HttpService("http://192.168.0.104/GroupBuilder/GetListTask.php");
try
{
httpService.ExecutePostRequest();
if(httpService.getResponseCode() == 200)
{
result = httpService.getResponse();
System.out.println("Result . . . "+result);
Log.d("Result", result);
if(result != null)
{
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(result);
JSONObject object;
JSONArray array;
Task_ = new ArrayList<Task>();
for(int i=0; i<jsonArray.length(); i++)
{
task_ = new Task();
object = jsonArray.getJSONObject(i);
task_.taskname = object.getString("taskname");
task_.tid = object.getString("tid");
System.out.println("Taask Tid "+task_.tid);
Task_.add(task_);
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else
{
Toast.makeText(context, httpService.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
proCollageList.setVisibility(View.GONE);
listCollege.setVisibility(View.VISIBLE);
if(Task_ != null)
{
ListTaskAdapter adapter = new ListTaskAdapter(Task_, context);
listCollege.setAdapter(adapter);
}
}
}//
public class HttpService
{
private ArrayList <NameValuePair> params;
private ArrayList <NameValuePair> headers;
private String url;
private int responseCode;
private String message;
private String response;
public String getResponse()
{
return response;
}
public String getErrorMessage()
{
return message;
}
public int getResponseCode()
{
return responseCode;
}
public HttpService(String url)
{
this.url = url;
params = new ArrayList<NameValuePair>();
headers = new ArrayList<NameValuePair>();
}
public void AddParam(String name, String value)
{
params.add(new BasicNameValuePair(name, value));
}
public void AddHeader(String name, String value)
{
headers.add(new BasicNameValuePair(name, value));
}
public void ExecutePostRequest() throws Exception
{
HttpPost request = new HttpPost(url);
for(NameValuePair h : headers)
{
request.addHeader(h.getName(), h.getValue());
}
if(!params.isEmpty())
{
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
}
executeRequest(request, url);
}
private void executeRequest(HttpUriRequest request, String url)
{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 10000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpResponse httpResponse;
try
{
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if (entity != null)
{
InputStream instream = entity.getContent();
response = convertStreamToString(instream);
instream.close();
}
}
catch (ClientProtocolException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
catch (IOException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
}
private String convertStreamToString(InputStream is)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try
{
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return sb.toString();
}
newgethttpresponse(this.execute();
setOnItemClickListener(新的android.widget.AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView tasknameOBJ=(TextView)view.findViewById(R.id.taskname);
TextView taskidOBJ=(TextView)view.findViewById(R.id.tid);
tid=taskidOBJ.getText().toString();
taskname=tasknameOBJ.getText().toString();
Toast.makeText(ListTask.this,“您选择的Id是”+tid,Toast.LENGTH\u SHORT.show();
意向意向=新意向(ListTask.this,GetSubTask.class);
星触觉(意向);
SharedReferences SharedReferences=ListTask.this.getSharedReferences(Config.SHARED\u PREF\u NAME,Context.MODE\u PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
putString(Config.TID\u SHARED\u PREF,TID);
putString(Config.TASKNAME\u SHARED\u PREF,TASKNAME);
//将值保存到编辑器
commit();
}
});
}
私有类GetHttpResponse扩展异步任务
{
私人语境;
字符串结果;
列出任务列表;
公共GetHttpResponse(上下文)
{
this.context=上下文;
}
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…arg0)
{
HttpService HttpService=新的HttpService(“http://192.168.0.104/GroupBuilder/GetListTask.php");
尝试
{
httpService.ExecutePostRequest();
if(httpService.getResponseCode()==200)
{
结果=httpService.getResponse();
System.out.println(“结果…”+结果);
Log.d(“结果”,结果);
如果(结果!=null)
{
JSONArray JSONArray=null;
试一试{
jsonArray=新jsonArray(结果);
JSONObject对象;
JSONArray阵列;
任务=新建ArrayList();
对于(int i=0;i
(我不知道正确的名称,只需在android studio中搜索jar文件,它肯定会在那里..找到它并将其添加到您的依赖项中,然后编译,这样只有其中的一些方法可以工作)
在你的活动中
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
new Async().execute();
}
class Async extends AsyncTask<String,String,String>{
@Override
protected String doInBackground(String... strings) {
JSONParser parser = new JSONParser();
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("id", "1234"));
JSONObject obj = parser.makeHttpRequest("http://192.168.0.43/myproject/test.php", "GET", params);
System.out.println(obj.toString());
return null;
}
}
}
公共类MyActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
新建异步().execute();
}
类Async扩展了AsyncTask{
@凌驾
受保护的字符串背景(字符串…字符串){
JSONParser=新的JSONParser();
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“id”,“1234”);
JSONObject obj=parser.makeHttpRequest(“http://192.168.0.43/myproject/test.php“,”GET“,params);
System.out.println(obj.toString());
返回null;
}
}
}
在php方面
<?php
$con = mysql_connect("localhost", "username", "password");
$re = mysql_select_db("db_name", $con);
$responce = array();
$name = $_REQUEST['id'];
$query = "select ...";
$result = mysql_query($query, $con);
$row = mysql_fetch_row($result);
$responce["value"] = array();
$data = array();
$data["name"] = $row["name"];
(something like that)
array_push($responce["value"] , $data);
echo json_encode($responce);
?>
您只需在httpservices中使用AddParam,请您详细解释一下,我是android新手。非常感谢您的帮助reply@ManojGayakwad检查这个答案,它包含了你的问题的解决方案和示例代码。另外,我建议使用改型或截取来进行网络调用,这些库非常容易使用c void AddParam(字符串名称,字符串值){params.add(新的BasicNameValuePair(名称,值));}使用此方法man….在为httpservice创建对象后,只需通过调用AddParam(“id”,YOURID)添加您的id)那是ALL@Mr.Popular我已经添加了AddParam方法。我添加了该方法,但我不知道如何添加我的id以及在何处进行声明。请给我解决方案或编辑我的代码。谢谢先生的回复
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
new Async().execute();
}
class Async extends AsyncTask<String,String,String>{
@Override
protected String doInBackground(String... strings) {
JSONParser parser = new JSONParser();
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("id", "1234"));
JSONObject obj = parser.makeHttpRequest("http://192.168.0.43/myproject/test.php", "GET", params);
System.out.println(obj.toString());
return null;
}
}
}
<?php
$con = mysql_connect("localhost", "username", "password");
$re = mysql_select_db("db_name", $con);
$responce = array();
$name = $_REQUEST['id'];
$query = "select ...";
$result = mysql_query($query, $con);
$row = mysql_fetch_row($result);
$responce["value"] = array();
$data = array();
$data["name"] = $row["name"];
(something like that)
array_push($responce["value"] , $data);
echo json_encode($responce);
?>