2017-04-22 28 views
1

我正在使用JSON结构从数据库检索数据。检索它只给了我第一行的数据库,我只想要插入数据库中的最后一行。检索数据只给我的数据库的第一行,我只想要在数据库中插入的最后一行

这是我的java类RetrieveInfo.java

public class RetrieveInfo extends AppCompatActivity implements View.OnClickListener { 

    public static final String DATA_URL = "http://ksvira.edu.in/getBusinessDetails.php"; 
    public static final String KEY_NAME = "name"; 
    public static final String KEY_EMAIL = "email"; 
    public static final String KEY_PHONENUM = "phone"; 
    public static final String KEY_ADDRESS = "address"; 
    public static final String KEY_FAX = "fax"; 
    public static final String KEY_MAILADDRESS = "mailaddress"; 
    public static final String KEY_OPENDATE = "opendate"; 

    public static final String JSON_ARRAY = "result"; 



    private Button buttonGet; 
    private TextView textViewResult; 

    private ProgressDialog loading; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_retrieve_info); 


     buttonGet = (Button) findViewById(R.id.buttonGet); 
     textViewResult = (TextView) findViewById(R.id.textView); 
     buttonGet.setOnClickListener(this); 
    } 

    private void getData() { 

     loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

     //String url = DATA_URL+editTextId.getText().toString().trim(); 
     String url=DATA_URL; 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(RetrieveInfo.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
        } 
       }); 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 

    private void showJSON(String response){ 
     String name=""; 
     String email=""; 
     String phonenum =""; 
     String fax = ""; 
     String address=""; 
     String mailaddress = ""; 
     String opendate = ""; 

     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(JSON_ARRAY); 

      int size = jsonObject.length(); 
      JSONObject collegeData = result.getJSONObject(size); 
      name = collegeData.getString(KEY_NAME); 
      email=collegeData.getString(KEY_EMAIL); 
      phonenum=collegeData.getString(KEY_PHONENUM); 
      fax=collegeData.getString(KEY_FAX); 
      address = collegeData.getString(KEY_ADDRESS); 
      mailaddress =collegeData.getString(KEY_MAILADDRESS); 
      opendate = collegeData.getString(KEY_OPENDATE); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     textViewResult.setText("Name:\t"+name+"\nEmail:\t"+email+"\nPhone:\t"+phonenum+"\nFax:\t"+fax+"\nAddress:\t" +address+"\nMailAddress:\t"+mailaddress 
       +"\nOpenDate\t"+opendate); 
    } 

    @Override 
    public void onClick(View v) { 

     getData(); 
    } 
} 

activity_retrieveinfo.xml

<Button 
    android:text="View Information" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button_View1" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="30sp" 
    android:id="@+id/textView2" 
    android:layout_below="@+id/button_View1" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentBottom="true" /> 

getBusinessDetails.php

<?php 

//if($_SERVER['REQUEST_METHOD']=='GET'){ 

//$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * from business_info"; 

$r = mysqli_query($con,$sql); 

// $res = mysqli_fetch_array($r); 


$result = array(); 

while($res = mysqli_fetch_array($r)) 
     { 
     $result[] = $res;  
     //array_push($result,array("name"=>$res[0],"email"=>$res[1],"phonenum"=>$res[2],"fax"=>$res[3],"address"=>$res[4],"mailaddress"=>$res[5],"opendate"=>$res[6]));    

     } 

//array_push($result,array("content"=>$res['content'])); 

echo json_encode(array("result"=>$result)); 


mysqli_close($con); 

// } 
?> 
+0

没有ORDER BY子句,第一个和最后一个概念都没有意义 – Strawberry

+0

非常感谢您的帮助。 –

回答

0

只是用这样的查询:“SELECT * FROM business_info订购(主键) desc limit 1“

+0

谢谢。它的工作 –

0

整顿您的服务器端查询$ SQL =

SELECT * FROM business_info ORDER BY column_name DESC LIMIT 1 

FYI

列名应该是主键。 ORDER BY关键字用于按升序或降序对结果集进行排序。 DESC LIMIT 1提取最后一个元素。

+0

多谢先生。 –

+0

我应该把id列作为主键吗? –

+0

@YashKaushik yes。让我告知 –

0

您需要在主键列上的mysql查询中使用顺序。

<?php 

//if($_SERVER['REQUEST_METHOD']=='GET'){ 

//$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * from business_info order by primary_key_column desc limit 1"; 

$r = mysqli_query($con,$sql); 

// $res = mysqli_fetch_array($r); 


$result = array(); 

while($res = mysqli_fetch_array($r)) 
     { 
     $result[] = $res;  
     //array_push($result,array("name"=>$res[0],"email"=>$res[1],"phonenum"=>$res[2],"fax"=>$res[3],"address"=>$res[4],"mailaddress"=>$res[5],"opendate"=>$res[6]));    

     } 

//array_push($result,array("content"=>$res['content'])); 

echo json_encode(array("result"=>$result)); 


mysqli_close($con); 

// } 
?> 
+0

我应该让ID作为我的表中的主键 –

+0

@Yash Kaushik是的,你可以。 –

+0

它的工作原理。非常感谢 –

0

您:

$sql = "SELECT * from business_info";  

把它改为:

$sql = select * from business_info order by yourPrimaryColumn desc limit 1; 
+0

其实先生,我是新手到android编程,这就是为什么我有问题? –

+0

我应该在数据库表中创建一个列ID并将其作为一级密钥 –

+0

是的,至少您必须在表中为主键创建一个唯一列 –

0

问题是,没有识别插入的最后记录是什么样的方式。通过主键排序结果只有在与插入顺序有关的情况下才有效。所以如果你的主键是'name',那么这与插入的最后一行有什么关系?

这将工作,如果你有像一个ID列(比如说一个自动增量字段)作为主键。

相关问题