Mysql
 sql >> база данни >  >> RDS >> Mysql

Не мога да извлека данни от mysql база данни в ListView в моето приложение за Android

Има няколко неща, които се случват тук, ще се опитам да реша каквото мога.

Този запис в дневника е подозрителен:

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());

Току-що опитах URL адреса в браузър и се получи, тъй като браузърът автоматично кодира URL адреса правилно, както следва:

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){

Още нещо, което трябва да споменем, вероятно ще искате да създадете отделен адаптер за всяка Acitvity. Както е сега, вие използвате един и същ адаптер и за двете дейности.

В 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. Създаване на посещаемост в laravel

  3. Как InnoDB съхранява символни колони?

  4. Информация за базата данни information_schema в MySQL

  5. SqlNullValueException при изпълнение на съхранена процедура с MySqlCommand