溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何實現(xiàn)sqlite查詢數(shù)據(jù)時去掉重復值

發(fā)布時間:2021-07-22 14:54:56 來源:億速云 閱讀:252 作者:小新 欄目:移動開發(fā)

小編給大家分享一下Android中如何實現(xiàn)sqlite查詢數(shù)據(jù)時去掉重復值,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、方式一:

/**
     * 參數(shù)一:是否去重
     * 參數(shù)二:表名
     * 參數(shù)三:columns 表示查詢的字段,new String[]{MODEL}表示查詢該表當中的模式(也表示查詢的結果)
     * 參數(shù)思:selection表示查詢的條件,PHONE_NUMBER+" = ?" 表示根據(jù)手機號去查詢模式
     * 參數(shù)五:selectionArgs 表示查詢條件對應的值,new String[]{phoneNumber}表示查詢條件對應的值
     * 參數(shù)六:String groupBy 分組
     * 參數(shù)七:String having
     * 參數(shù)八:orderBy 表示根據(jù)什么排序,
     * 參數(shù)九:limit 限制查詢返回的行數(shù),NULL表示無限制子句
     **/
    Cursor cursor = readableDatabase.query(true,TABLE_NAME, new String[]{DESCRIPTION,ID,IMAGE_URL,LATITUDE,LONGITUDE,NAME,NEED_AUDIO,SPOT_TYPE,TGROUP,AUDIO_NAME,AREA_NAME}, AREA_NAME + " = ?", new String[]{areaName}, null, null, null,null);

全部查詢代碼如下:

  /**
   * 根據(jù)景區(qū)名稱查詢景點數(shù)據(jù)
   * @param areaName
   * @return 0:未查詢到攔截模式(也就是該手機號沒有設置攔截模式) 1:攔截短信 2:攔截電話 3:攔截所有
   **/
  public List<ScenicSpot> getScenicAreas(String areaName){
    ArrayList<ScenicSpot> scenicSpotList = new ArrayList<>();
    String model = "0";
    SQLiteDatabase readableDatabase = mSmartTourSQLiteOpenHelper.getReadableDatabase();
    /**
     * 參數(shù)一:是否去重
     * 參數(shù)二:表名
     * 參數(shù)三:columns 表示查詢的字段,new String[]{MODEL}表示查詢該表當中的模式(也表示查詢的結果)
     * 參數(shù)思:selection表示查詢的條件,PHONE_NUMBER+" = ?" 表示根據(jù)手機號去查詢模式
     * 參數(shù)五:selectionArgs 表示查詢條件對應的值,new String[]{phoneNumber}表示查詢條件對應的值
     * 參數(shù)六:String groupBy 分組
     * 參數(shù)七:String having
     * 參數(shù)八:orderBy 表示根據(jù)什么排序,
     * 參數(shù)九:limit 限制查詢返回的行數(shù),NULL表示無限制子句
     **/
    Cursor cursor = readableDatabase.query(true,TABLE_NAME, new String[]{DESCRIPTION,ID,IMAGE_URL,LATITUDE,LONGITUDE,NAME,NEED_AUDIO,SPOT_TYPE,TGROUP,AUDIO_NAME,AREA_NAME}, AREA_NAME + " = ?", new String[]{areaName}, null, null, null,null);
    while (cursor.moveToNext()){
      ScenicSpot scenicSpot = new ScenicSpot();
      String description = cursor.getString(cursor.getColumnIndex(DESCRIPTION));
      String id = cursor.getString(cursor.getColumnIndex(ID));
      String image_url = cursor.getString(cursor.getColumnIndex(IMAGE_URL));
      String latitude = cursor.getString(cursor.getColumnIndex(LATITUDE));
      String longitude = cursor.getString(cursor.getColumnIndex(LONGITUDE));
      String name = cursor.getString(cursor.getColumnIndex(NAME));
      String need_audio = cursor.getString(cursor.getColumnIndex(NEED_AUDIO));
      String spot_type = cursor.getString(cursor.getColumnIndex(SPOT_TYPE));
      String tgroup = cursor.getString(cursor.getColumnIndex(TGROUP));
      String audio_name = cursor.getString(cursor.getColumnIndex(AUDIO_NAME));
      String area_name = cursor.getString(cursor.getColumnIndex(AREA_NAME));
      scenicSpot.setDescription(description);
      scenicSpot.setId(id);
      scenicSpot.setImageurl(image_url);
      scenicSpot.setLatitude(latitude);
      scenicSpot.setLongitude(longitude);
      scenicSpot.setName(name);
      scenicSpot.setNeedAudio(need_audio);
      scenicSpot.setSpotType(spot_type);
      scenicSpot.setTgroup(tgroup);
      scenicSpot.setAudioname(audio_name);
      scenicSpot.setAreaName(area_name);
      scenicSpotList.add(scenicSpot);
    }
    cursor.close();
    readableDatabase.close();
    return scenicSpotList;
  }

方式二:

String sql = "select distinct "
   + TYPENAME
   + " from "
   + TABLE_NAME 
   + " ORDER BY " + TYPE + " ASC";
  Cursor c = db.rawQuery(sql, null);

完整代碼:

 /**
 * @return 所有組織結構名稱
 **/
 public static List<String> queryTypeNames() {
 synchronized (DatabaseHelper.lock) {
  List<String> types = null;
  SQLiteDatabase db = DatabaseHelper.getInstance().getReadableDatabase();
  try {
  String sql = "select distinct "
   + TYPENAME
   + " from "
   + TABLE_NAME 
   + " ORDER BY " + TYPE + " ASC";
  Cursor c = db.rawQuery(sql, null);
  while (c.moveToNext()) {
   String type = c.getString(c.getColumnIndex(TYPENAME));
   if (types == null) {
   types = new ArrayList<String>();
   }
   if (type != null && type.length() > 1) {
   types.add(type);
   }
  }
  db.close();
  return types;
  } catch (Exception e) {
  db.close();
  }
  return types;
 }
 }

以上是“Android中如何實現(xiàn)sqlite查詢數(shù)據(jù)時去掉重復值”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI