2017-04-17 2 views
0

J'utilise la base de données Ormlite dans l'une de mes applications. Maintenant, je veux supprimer tous les enregistrements de la base de données qui sont stockés avant une date particulière. Prenons un exemple: -Supprimer tous les enregistrements en utilisant ORMlite avant une date particulière

Aujourd'hui est le 17 avril. Lorsque l'utilisateur a sélectionné Une semaine dans l'une des options via l'application, tous les enregistrements qui sont avant une semaine, c'est-à-dire avant et le 10 avril doivent être supprimés de la base de données.

Ce qui suit est ma classe de haricot de l'objet: -

public class AlertsDataClass extends BaseDataClass implements Parcelable { 

public static final Creator<AlertsDataClass> CREATOR = new Creator<AlertsDataClass>() { 
    @Override 
    public AlertsDataClass createFromParcel(Parcel in) { 
     return new AlertsDataClass(in); 
    } 

    @Override 
    public AlertsDataClass[] newArray(int size) { 
     return new AlertsDataClass[size]; 
    } 
}; 
@DatabaseField 
private int alertId; 
@DatabaseField 
private String alertTitle; 
@DatabaseField 
private int alertLevel; 
@DatabaseField 
private String alertLog; 
@DatabaseField 
private int alertAssignee; 
@DatabaseField 
private String alertLocationId; 
@DatabaseField 
private int alertStatus; 
@DatabaseField 
private String alertStartTime; 
@DatabaseField 
private String alertUpdatedTime; 
@DatabaseField 
private String alertDeviceId; 
@DatabaseField 
private int alertActionNeeded; 
@DatabaseField 
private String alertAssigneeName; 

public AlertsDataClass() { 
} 

protected AlertsDataClass(Parcel in) { 
    alertId = in.readInt(); 
    alertTitle = in.readString(); 
    alertLevel = in.readInt(); 
    alertLog = in.readString(); 
    alertAssignee = in.readInt(); 
    alertAssigneeName = in.readString(); 
    alertLocationId = in.readString(); 
    alertStatus = in.readInt(); 
    alertStartTime = in.readString(); 
    alertUpdatedTime = in.readString(); 
    alertDeviceId = in.readString(); 
    alertActionNeeded = in.readInt(); 
} 

public int getAlertId() { 
    return alertId; 
} 

public void setAlertId(int alertId) { 
    this.alertId = alertId; 
} 

public String getAlertTitle() { 
    return alertTitle; 
} 

public void setAlertTitle(String alertTitle) { 
    this.alertTitle = alertTitle; 
} 

public int getAlertLevel() { 
    return alertLevel; 
} 

public void setAlertLevel(int alertLevel) { 
    this.alertLevel = alertLevel; 
} 

public String getAlertLog() { 
    return alertLog; 
} 

public void setAlertLog(String alertLog) { 
    this.alertLog = alertLog; 
} 

public int getAlertAssignee() { 
    return alertAssignee; 
} 

public void setAlertAssignee(int alertAssignee) { 
    this.alertAssignee = alertAssignee; 
} 

public String getAlertLocationId() { 
    return alertLocationId; 
} 

public void setAlertLocationId(String alertLocationId) { 
    this.alertLocationId = alertLocationId; 
} 

public int getAlertStatus() { 
    return alertStatus; 
} 

public void setAlertStatus(int alertStatus) { 
    this.alertStatus = alertStatus; 
} 

public String getAlertStartTime() { 
    return alertStartTime; 
} 

public void setAlertStartTime(String alertStartTime) { 
    this.alertStartTime = alertStartTime; 
} 

public String getAlertUpdatedTime() { 
    return alertUpdatedTime; 
} 

public void setAlertUpdatedTime(String alertUpdatedTime) { 
    this.alertUpdatedTime = alertUpdatedTime; 
} 

public String getAlertDeviceId() { 
    return alertDeviceId; 
} 

public void setAlertDeviceId(String alertDeviceId) { 
    this.alertDeviceId = alertDeviceId; 
} 

public int getAlertActionNeeded() { 
    return alertActionNeeded; 
} 

public void setAlertActionNeeded(int alertActionNeeded) { 
    this.alertActionNeeded = alertActionNeeded; 
} 

public String getAlertAssigneeName() { 
    return alertAssigneeName; 
} 

public void setAlertAssigneeName(String alertAssigneeName) { 
    this.alertAssigneeName = alertAssigneeName; 
} 

@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeInt(alertId); 
    dest.writeString(alertTitle); 
    dest.writeInt(alertLevel); 
    dest.writeString(alertLog); 
    dest.writeInt(alertAssignee); 
    dest.writeString(alertAssigneeName); 
    dest.writeString(alertLocationId); 
    dest.writeInt(alertStatus); 
    dest.writeString(alertStartTime); 
    dest.writeString(alertUpdatedTime); 
    dest.writeString(alertDeviceId); 
    dest.writeInt(alertActionNeeded); 
} 

}

Dans la classe de données ci-dessus, "alertStartTime" est le champ qui contient la date dans le format « 17/04/17 16h29 ". Maintenant, lorsque l'utilisateur sélectionne une semaine, tous les enregistrements avant et le "04/10/17 16:29" doivent être supprimés de la base de données. Je supprime l'enregistrement sur la base de deux champs. L'un est "alertStatus" dont la valeur devrait être 5 et l'autre est "alertStartTime" dans lequel une semaine avant la date shuold sera donnée pour supprimer tous les enregistrements qui viennent avant et le "04/10/17 16:29". J'espère que vous avez compris ma question clairement.

Ma base de données supprimer la méthode des dossiers comme suit: -

public void deleteCompleteAlerts(int alertStatus, String alertStartTime) { 

    DeleteBuilder<AlertsDataClass, Integer> deleteBuilder = getAlertsDetailDao().deleteBuilder(); 
    try { 
     Where<AlertsDataClass, Integer> where = deleteBuilder.where(); 
     int condCount = 0; 
     if(alertStatus == 5){ 
      where.eq("alertStatus", alertStatus); 
      condCount++; 
     } 
     if(alertStartTime.equalsIgnoreCase("04/14/17")){ 
      where.like("alertStartTime", "%" + alertStartTime + "%"); 
      condCount++; 
     } 
     if (condCount > 0) { 
      where.and(condCount); 

     } 

     deleteBuilder.delete(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

Dans la méthode ci-dessus, nous devons modifier cette instruction if comme suit: -

if(alertStartTime.equalsIgnoreCase("04/14/17")){ 
      where.like("alertStartTime", "%" + alertStartTime + "%"); 
      condCount++; 
     } 

S'il vous plaît me aider à trier ce problème. Merci à l'avance les gars !!

Répondre

0

Dans la classe de données ci-dessus, "alertStartTime" est le champ qui contient la date au format "04/17/17 16:29". Maintenant, lorsque l'utilisateur sélectionne une semaine, tous les enregistrements avant et le "04/10/17 16:29" doivent être supprimés de la base de données.

Vous devriez être en mesure de faire quelque chose comme ce qui suit:

DeleteBuilder<AlertsDataClass, Integer> db = dao.deleteBuilder(); 
db.where().le("alertStartTime", "2017-04-10 16:29"); 
db.delete(); 

SQLite gère très specific timestamp formats et dans votre cas, il doit être au format "YYYY-MM-DD HH:MM". Voici plus de Sqlite's docs about time formats.