2014-09-04 35 views
0

我試圖使用Query LIKE語句從我的SQLite中獲取所有數據。但我不知道如何得到它。從SQLite槽搜索中獲取所有數據

我嘗試修改Query,我用它來獲取所有數據而沒有過濾,並且它的工作正常。 我已經嘗試搜索這個問題,但我仍然不明白。

這裏是我的Search.java

Intent search = getIntent(); 
    String searchResult = search.getStringExtra("TAG_SEARCH"); 
    DatabaseHandler db = new DatabaseHandler(this); 

    /** 
    * CRUD Operations 
    * */ 
    Log.d("Reading: ", "Reading all contacts.."); 
    List <AllItem> allItems = new ArrayList<AllItem>(); 

    allItems = db.getAllSearchResult(); 

    ArrayList <String> allItems2 = new ArrayList<String>(); 

    for (AllItem cn : allItems) { 
     allItems2.add(cn.getItem_name()); 
     allItems2.add(cn.getAreaNAme()); 
     allItems2.add(cn.getPriceCategory()); 
     allItems2.add(cn.getImageCount()); 
     allItems2.add(cn.getID()); 
     allItems2.add(cn.getCategory_name()); 
     allItems2.add(cn.getKids()); 
     allItems2.add(cn.getFreeTextForKids()); 
     allItems2.add(cn.getDescription()); 
     allItems2.add(cn.getPromotion()); 
     allItems2.add(cn.getPromotionFreeText()); 
     allItems2.add(cn.getPromotionStartDate() + " - "); 
     allItems2.add(cn.getPromotionEndDate()); 
     allItems2.add(cn.getYoutube()); 
     allItems2.add(cn.getYoutubeLink()); 
     allItems2.add(cn.getPhone()); 
     allItems2.add(cn.getMobilePhone()); 
     allItems2.add(cn.getReview()); 
     allItems2.add(cn.getAddress()); 
     allItems2.add(cn.getLatitude()); 
     allItems2.add(cn.getLongitude()); 
     allItems2.add(cn.getOpenDetail()); 
     allItems2.add(cn.getFacebook()); 
     allItems2.add(cn.getTwitter()); 
     allItems2.add(cn.getInstagram()); 
     allItems2.add(cn.getWebsite()); 
    } 


    CustomAdapterAccommodation adapter = new CustomAdapterAccommodation(Search.this, allItems2); 
    listview.setAdapter(adapter); 


} 

我想使用String從意向上搜索DATABASE數據。

這是我DatabaseHandler.java

// Getting All search result 
public List<AllItem> getAllSearchResult() { 
    List<AllItem> allsearchResultList = new ArrayList<AllItem>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_ALLITEM; 

    // If i try change like this its show nothing 
    // String selectQuery = "SELECT * FROM " + TABLE_ALLITEM + " WHERE " + KEY_ITEM_NAME_ALLITEM + " = '%a%'"; 


    Log.d("Query search", selectQuery); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      AllItem allitem = new AllItem(); 
      allitem.setTableID(cursor.getInt(0)); 
      allitem.setID(cursor.getString(1)); 
      allitem.setCategory_name(cursor.getString(2)); 
      allitem.setItem_Name(cursor.getString(3)); 

      allitem.setDescription(cursor.getString(4)); 
      allitem.setAddress(cursor.getString(5)); 
      allitem.setArea (cursor.getString(6)); 
      allitem.setAreaName (cursor.getString(7)); 

      allitem.setLongitude (cursor.getString(8)); 
      allitem.setLatitude (cursor.getString(9)); 

      allitem.setOpenDetail (cursor.getString(10)); 

      allitem.setKids (cursor.getString(11)); 
      allitem.setFreeTextForKids (cursor.getString(12)); 

      allitem.setCuisineID (cursor.getString(13)); 
      allitem.setCuisineName (cursor.getString(14)); 
      allitem.setCuisineUniqueCode (cursor.getString(15)); 

      allitem.setBarTypeID (cursor.getString(16)); 
      allitem.setBarTypeName (cursor.getString(17)); 
      allitem.setBarTypeCode (cursor.getString(18)); 

      allitem.setRoomTypeID (cursor.getString(19)); 
      allitem.setRoomTypeName (cursor.getString(20)); 
      allitem.setRoomTypeCode (cursor.getString(21)); 

      allitem.setWellnessTypeID (cursor.getString(22)); 
      allitem.setWellnessTypeName (cursor.getString(23)); 
      allitem.setWellnessTypeCode (cursor.getString(24)); 

      allitem.setAttractionsTypeID (cursor.getString(25)); 
      allitem.setAttractionsTypeName (cursor.getString(26)); 
      allitem.setAttractionsTypeCode (cursor.getString(27)); 

      allitem.setShopsTypeID (cursor.getString(28)); 
      allitem.setShopsTypeName (cursor.getString(29)); 
      allitem.setShopsTypeCode (cursor.getString(30)); 

      allitem.setAdventuresTypeID (cursor.getString(31)); 
      allitem.setAdventuresTypeName (cursor.getString(32)); 
      allitem.setAdventuresTypeCode (cursor.getString(33)); 

      allitem.setRomanceTypeID (cursor.getString(34)); 
      allitem.setRomanceTypeName (cursor.getString(35)); 
      allitem.setRomanceTypeCode (cursor.getString(36)); 

      allitem.setGalleriesTypeID (cursor.getString(37)); 
      allitem.setGalleriesTypeName (cursor.getString(38)); 
      allitem.setGalleriesTypeCode (cursor.getString(39)); 

      allitem.setFurnitureTypeID (cursor.getString(40)); 
      allitem.setFurnitureTypeName (cursor.getString(41)); 
      allitem.setFurnitureTypeCode (cursor.getString(42)); 

      allitem.setEventTypeID (cursor.getString(43)); 
      allitem.setEventTypeName (cursor.getString(44)); 
      allitem.setEventTypeCode (cursor.getString(45)); 

      allitem.setPriceCategory (cursor.getString(46)); 

      allitem.setHotelOfficialStarRating (cursor.getString(47)); 

      allitem.setPhone (cursor.getString(48)); 
      allitem.setMobilePhone (cursor.getString(49)); 

      allitem.setReview (cursor.getString(50)); 

      allitem.setPromotion (cursor.getString(51)); 
      allitem.setPromotionFreeText (cursor.getString(52)); 
      allitem.setPromotionStartDate (cursor.getString(53)); 
      allitem.setPromotionEndDate (cursor.getString(54)); 
      allitem.setActive (cursor.getString(55)); 

      allitem.setImageCount (cursor.getString(56)); 

      allitem.setCreatedBy (cursor.getString(57)); 
      allitem.setCreatedDate (cursor.getString(58)); 
      allitem.setUpdatedBy (cursor.getString(59)); 
      allitem.setUpdatedDate (cursor.getString(60)); 

      allitem.setFacebook (cursor.getString(61)); 
      allitem.setTwitter (cursor.getString(62)); 
      allitem.setInstagram (cursor.getString(63)); 
      allitem.setWebsite (cursor.getString(64)); 
      allitem.setYoutube (cursor.getString(65)); 
      allitem.setYoutubeLink (cursor.getString(66)); 

      allitem.setMember (cursor.getString(67)); 
      allitem.setMemberStartDate (cursor.getString(68)); 
      allitem.setMemberEndDate (cursor.getString(69)); 

      allitem.setNew (cursor.getString(70)); 
      allitem.setEventStartDate (cursor.getString(71)); 
      allitem.setEventEndDate (cursor.getString(72)); 


      // Adding food to list 
      allsearchResultList.add(allitem); 
     } while (cursor.moveToNext()); 
    } 

    // return food list 
    return allsearchResultList; 
} 

是否有任何人能幫助我如何解決這個問題呢? 當用戶按下按鈕搜索,文本發送到Search類和文本是從SQLite獲取所有數據的關鍵。然後顯示在ListView

感謝前:d

回答

0

使用LIKE不等於

LIKE允許你使用wildcars: %多個字符表示 _代表一個字符

String filter = "a";  
String selectQuery = "SELECT * FROM " + TABLE_ALLITEM + " WHERE " + KEY_ITEM_NAME_ALLITEM + " LIKE '%"+filter+"%' "; 
+0

如何使用由用戶輸入成爲搜索的關鍵? – Matthew 2014-09-04 15:28:34

+0

用從用戶輸入中獲得的字符串替換過濾器的值。 – 2014-09-04 15:30:07

+0

如果它在不同的課上呢?如你看到的。我將數據庫處理程序稱爲搜索類。 – Matthew 2014-09-04 15:32:22