2015-03-20 6 views
0

Я использую ormlite в моем проекте Android, и у меня проблема с данными об обновлении. Вот моя функция, которая сохраняет и обновляет данные.Android update row int ormlite

public void saveDeadline(){ 
    if (getIntent().getExtras() == null){ 
     try { 
      Deadline newDeadline = new Deadline(deadlineStr, fromStr, toStr); 
      deadlineDao.create(newDeadline); 
     }catch (SQLException e){ 
      e.printStackTrace(); 
     } 
    } else { 
     try { 
      Deadline newDeadline = new Deadline(deadlineStr, fromStr, toStr); 
      deadlineDao.update(newDeadline); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

А вот мой Entity класс:

@DatabaseTable(tableName = "deadline") 
public class Deadline{ 

    @DatabaseField(dataType = DataType.STRING) 
    private String deadlineName; 

    @DatabaseField(dataType = DataType.STRING) 
    private String deadlineStart; 

    @DatabaseField(dataType = DataType.STRING) 
    private String deadlineEnd; 

    public Deadline() { 
     super(); 
    } 

    public Deadline(String deadlineName, String deadlineStart, String deadlineEnd) { 
     this.deadlineName = deadlineName; 
     this.deadlineStart = deadlineStart; 
     this.deadlineEnd = deadlineEnd; 
    } 

    // removed getters and setters  
} 

Мое приложение не может обновить существующие данные? Что я делаю неправильно?

ответ

0

Мое приложение не может обновить существующие данные? Что я делаю не так?

Всякий раз, когда вы обращаетесь за помощью к программам Java, вы всегда должны искать и публиковать исключение, включая вызванные сообщения. В вашем случае, если вы посмотрите на ваши Android журналы, я подозреваю, вы увидите нечто похожее на следующее сообщение:

Cannot update deadline because it doesn't have an id field 

Используете ли такие вещи, как dao.update(...) или dao.delete(...) вам нужно иметь поле, которое вы маркировать как личность поле с id = true или generatedId = true в аннотации @DatabaseField.

Взгляните на пример на ORMLite home page и в документации:

@DatabaseTable(tableName = "accounts") 
public class Account { 
    @DatabaseField(id = true) 
    private String name; 

Если это не проблема, то обязательно размещать сообщения исключений.