Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể tìm nạp dữ liệu từ cơ sở dữ liệu mysql vào ListView trong Ứng dụng Android của tôi

Có một số việc đang xảy ra ở đây, tôi sẽ cố gắng giải quyết những gì có thể.

Mục nhật ký này đáng ngờ:

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

Ngoài ra, từ nhật ký này:

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

Bạn có thể thấy rằng bạn không nhận được phản hồi hợp lệ từ trang PHP này.

Khối mã này đang đưa ra một ngoại lệ:

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

Tôi vừa thử URL trong một trình duyệt và nó hoạt động, vì trình duyệt tự động mã hóa url đúng cách, như thế này:

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

Tôi nghĩ rằng bạn chỉ cần mã hóa URL đúng cách vì chuỗi chứa khoảng trắng.

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

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

Đối với vấn đề danh sách của bạn tăng gấp đôi, bạn chỉ có thể xóa danh sách mỗi khi AsyncTask thực thi:

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

Một điều nữa cần đề cập, có thể bạn sẽ muốn tạo một Bộ điều hợp riêng cho mỗi Acitvity. Như hiện tại, bạn đang sử dụng cùng một Bộ điều hợp cho cả hai Hoạt động.

Trong getView() của Bộ điều hợp của bạn , bạn tham khảo R.id.pro_nameR.id.pro_uprice , nhưng bạn đang sử dụng Bộ điều hợp này trong cả hai Hoạt động của mình. Cả hai Hoạt động của bạn có chứa các phần tử này trong xml bố cục của chúng không?

    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. Nhiều khóa ngoại vào cùng một bảng Gas Orm

  2. SQL nhận tin nhắn cuối cùng từ / tới người dùng nhất định

  3. Android:Làm thế nào để gửi dữ liệu đến MySQL DB mà không sử dụng JDBC, PHP hoặc bất kỳ dịch vụ web nào khác?

  4. Loại MySQL nào phù hợp nhất cho cột giá?

  5. Chọn bản ghi theo thứ tự id cha