【发布时间】:2017-09-13 01:24:55
【问题描述】:
我在我的一个应用程序中使用 Ormlite 数据库。现在我想从数据库中删除在特定日期之前存储的所有记录。举个例子:-
今天是 4 月 17 日。当用户通过应用程序在其中一个选项中选择一周时,则应从数据库中删除一周之前的所有记录,即 4 月 10 日之前和之后。
以下是我的 Object bean 类:-
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);
}
}
在上述数据类中,“alertStartTime”是包含日期的字段,格式为“04/17/17 16:29”。现在当用户选择一周时,应该从数据库中删除“04/10/17 16:29”之前和之后的所有记录。
我根据两个字段删除记录。一种是“alertStatus”,其值应为 5,另一种是“alertStartTime”,其中应在日期前一周删除“04/10/17 16:29”之前和之前的所有记录。我希望你们能清楚地理解我的问题。
我的数据库删除记录方法如下:-
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();
}
}
在上面的方法中,我们要修改这个if语句如下:-
if(alertStartTime.equalsIgnoreCase("04/14/17")){
where.like("alertStartTime", "%" + alertStartTime + "%");
condCount++;
}
请帮我解决这个问题。提前谢谢大家!!
【问题讨论】:
标签: android date sql-delete ormlite