2016-04-21 4 views
0

Я разрабатываю приложение, в котором у меня есть список профилей, который хранится в базе данных, содержащей слишком много профилей, проблема в том, что при сохранении нового профиля приложение должно иметь проверьте профиль уже существует или нет .... как это сделатьсравнить строку со значениями столбца базы данных

mSaveProfile.setOnClickListener(new View.OnClickListener() 
    { 

     @Override 
     public void onClick(View view) 
     { 
      CProfileDataSource m_profileDataSource = new CProfileDataSource(CAddNewProfileActivity.this); 
      _profile = mProfileName.getText().toString(); 
      if (_profile.matches("")) 
      { 
       Toast.makeText(CAddNewProfileActivity.this, "You did not enter a profileName", Toast.LENGTH_SHORT).show(); 
       return; 
      } else if(_profile.equalsIgnoreCase(getProfileName(CAddNewProfileActivity.this))) 
      { 
       Toast.makeText(CAddNewProfileActivity.this, "Profile already exists", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      else 
      { 
       userProfile.setProfileName(_profile); 
       m_profileDataSource.addProfile(new CUserProfile(CAddNewProfileActivity.this, userProfile.getProfileName(), userProfile.getBrightness(), userProfile.getSleepTime(), m_n8SensorState, userProfile.getOptimization())); 
       Toast.makeText(CAddNewProfileActivity.this, "Saved", Toast.LENGTH_SHORT).show(); 
      } 
      finish(); 
     } 
    }); 

и следующая функция проверяет только последний введенный профиль не весь список ..

public String getProfileName(CAddNewProfileActivity cAddNewProfileActivity){ 
    String profile=null; 
    CProfileDataSource profileDataSource =new CProfileDataSource(cAddNewProfileActivity); 
    List<CUserProfile> profileName=profileDataSource.getAllProfiles(); 
    for(CUserProfile cp:profileName){ 
     profile=cp.getProfileName(); 
    } 
    return profile; 
} 
+0

Если вы используете SQLite: http://stackoverflow.com/a/24573979/4706693 – NSimon

+0

Есть ли какой-либо идентификатор или уникальный столбец, который генерируется пользователем, а не сгенерирован автоматически? Проверьте это же в столбце базы данных. Если доступно, то уже существует else не существует –

+0

@sam :: вы используете sqlite (OR) любой ORM .. – Jeevanandhan

ответ

0
public long getProfilesRecordCount(String profileName) 
{ 
SQLiteDatabase db=this.openReadable(); 
long rawNum=DatabaseUtils.queryNumEntries(db,TABLE_NAME,"Profile_Name=?", new String[]{profileName}); 
return rawNum; 
} 

rawNum не должен превышать 0 ... если это то строка уже существует.

0

Ниже методом проб объясняет, как проверить, существует ли профиль или нет. Это образец, который вы должны были изменить значения, имя таблицы и условия, в соответствии с вашими.

public void saveOrUpdateProfile(String profileId, String name, String emailId) { 
     boolean UPDATE_FLAG = false; 

     SQLiteDatabase sdb = this.getWritableDatabase(); 

     String selectQuery = "SELECT * FROM tableName WHERE profileId = '" + profileId + "';"; 

     Cursor cursor = sdb.rawQuery(selectQuery, null); 
     try { 
      if (cursor != null && cursor.getCount() > 0) { 
       if (cursor.moveToFirst()) { 
        UPDATE_FLAG = true; 
       } 
      } 

      ContentValues values = new ContentValues(); 
      values. ("name", name); 
      values. ("email_id", emailId); 

      if (UPDATE_FLAG) { 
       sdb.update(tableName, values, "profileId = ?", new String[]{profileId}); 
      } else { 
       sdb.insert(tableName, null, values); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (cursor != null && !cursor.isClosed()) { 
       cursor.close(); 
      } 
     } 
    } 
+0

.i решили с помощью .. public long getProfilesRecordCount (String profileName) {SQLiteDatabase db = this.openReadable(); long rawNum = DatabaseUtils.queryNumEntries (db, TABLE_NAME, "Profile_Name =?", new String [] {имя_файла}); return rawNum; } ........ rawNum не должен превышать 0 – sam

Смежные вопросы