Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मेरे Android एप्लिकेशन में mysql डेटाबेस से ListView में डेटा लाने में असमर्थ

यहां कुछ चीजें चल रही हैं, मैं जो कर सकता हूं उसे संबोधित करने की कोशिश करूंगा।

यह लॉग प्रविष्टि संदिग्ध है:

03-22 22:30:42.860: E/ERROR(6055): Illegal character in query at index 53: http://necrecords.16mb.com/getproducts.php?password=A AA E EEE

साथ ही, इस लॉग से:

03-22 22:54:08.000: E/ERROR(7654): Error converting result java.lang.NullPointerException: lock == null

आप देख सकते हैं कि आपको इस PHP पृष्ठ से कोई मान्य प्रतिक्रिया नहीं मिल रही है।

यह कोड ब्लॉक एक अपवाद फेंक रहा है:

//convert response to string
   try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
              sb.append(line + "\n");
        }
        is.close();         
        result=sb.toString();
   }catch(Exception e){
        Log.e("ERROR", "Error converting result "+e.toString());

मैंने अभी एक ब्राउज़र में यूआरएल की कोशिश की, और यह काम किया, क्योंकि ब्राउज़र स्वचालित रूप से यूआरएल को ठीक से एन्कोड करता है, जैसे:

http://necrecords.16mb.com/getproducts.php?password=A%20AA%20E%20EEE

मुझे लगता है कि स्ट्रिंग में रिक्त स्थान होने के कारण आपको URL को ठीक से एन्कोड करने की आवश्यकता है।

String query = URLEncoder.encode(mname, "utf-8");

httppost= new HttpPost("http://necrecords.16mb.com/getsongslist.php?password="+query);
response=httpclient.execute(httppost);     

जहां तक ​​आपकी सूची के दोगुने होने की बात है, आप हर बार AsyncTask के निष्पादित होने पर सूची को साफ कर सकते हैं:

protected Void doInBackground(Void...params){ 

   InputStream is=null;
   String result="";
   try{

   records.clear(); //clear the list before re-populating

   httpclient=new DefaultHttpClient();
      httppost= new HttpPost("http://necrecords.16mb.com/getproducts.php");
   response=httpclient.execute(httppost);         
         HttpEntity entity = response.getEntity();
         is = entity.getContent();

   }catch(Exception e){

उल्लेख करने के लिए एक और बात, आप शायद प्रत्येक एसिटीविटी के लिए एक अलग एडेप्टर बनाना चाहेंगे। जैसा कि अभी है, आप दोनों गतिविधियों के लिए एक ही एडेप्टर का उपयोग कर रहे हैं।

आपके एडॉप्टर के getView() . में , आप R.id.pro_name . का संदर्भ लें और R.id.pro_uprice , लेकिन आप इस एडेप्टर का उपयोग अपनी दोनों गतिविधियों में कर रहे हैं। क्या आपकी दोनों गतिविधियों में ये तत्व उनके लेआउट xml में शामिल हैं?

    public View getView(int position, View convertView, ViewGroup parent) {

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     View itemView = inflater.inflate(groupid, parent, false);
     String[] row_items=records.get(position).split("__");
     TextView textName= (TextView) itemView.findViewById(R.id.pro_name);
     textName.setText(row_items[0]);
     TextView textPrice= (TextView) itemView.findViewById(R.id.pro_uprice);
     textPrice.setText(row_items[1]+"$");
     return itemView;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया में mysql गतिशील क्वेरी

  2. आईडी को अल्पविराम से अलग किए गए मानों के रूप में संग्रहीत करना

  3. क्या यह एसक्यूएल इंजेक्शन को रोकने के लिए काम करता है

  4. Laravel 5.4 में पिवट टेबल को कैसे सीड करें?

  5. कुछ शर्तों के साथ सभी पंक्तियों को वापस करना