2015-10-04 2 views
0

Это не ошибка, но я не могу обновить свою ТАБЛИЦУ.Невозможно обновить запрос Android

Я не могу найти, что не так с этими утверждениями. Нет никаких проблем со значениями.

goal_id = Integer.parseInt(extras.getString("goalid")); 
int i=0; 
Activities act = new Activities(goal_id,activityname.getText().toString(),Integer.parseInt(days.getText().toString()),i,false); 
dbhandler.updateActivty(act); 

// Обновление это деятельность

public int updateActivty(Activities act) { 
     SQLiteDatabase db = dbhandler.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(MyDBHandler.COLUMN_ACTIVITY_NAME, act.getActivityName()); 
     values.put(MyDBHandler.COLUMN_DAYS, act.getDays()); 
     values.put(MyDBHandler.COLUMN_NO_OF_TASKS, act.getNoOfTasks()); 
     values.put(MyDBHandler.COLUMN_COMPLETE, act.getComplete()); 

     // updating row 
     return db.update(MyDBHandler.TABLE_ACTIVITIES, values, MyDBHandler.COLUMN_ID + " = ?", 
       new String[] { String.valueOf(act.getId()) }); 
    } 
+0

Зачем обновлять? Также вы обычно передаете данные адаптеру, к которому он обращается к части данных udpating. –

+0

хорошо, im передавая новые значения. –

+0

Что такое возвращаемое значение db.update? – hinneLinks

ответ

0

метод updateActivty никогда не вызывается. используйте Event Bus для передачи активности данных в действие.

+0

Мне нужно обновить базу данных новыми значениями –

+0

Метод db.update возвращает значение s, если обновление является успешным, тогда оно возвращает длинное значение> 0, если не успех, он возвращает <= 0. сначала запишите значение, если не sucrss, а затем проверьте, что база данных уже создана, имя столбца, имя таблицы и идентификатор –

0

Если бы я тебя, я бы работать немного больше и сделать следующее:
Try, чтобы увидеть, если данные в базе данных путем поиска значений для этого ID:

public static Cursor find(SQLiteDatabase db, String uid) { 
    Tables table = Tables.YourTable;//it can be an enum or something static that contain/gives access to all of your columns. Hopefully it is clear. 
    return db.query(table.getTableName(), 
    getColumnNames(table), 
    COLUMN_NAME_ID + " =?", 
    new String[]{uid}, null, null, null); 
    } 


Следующая :
Вы создаете адаптер, который может быть доступной форме везде:

MyAdapter implements IMyAdapter 
{ 
    @Override 
    public boolean insert(IRow row){ 
     boolean success = false; 
     synchronized (lock) { 
      openIfDatabaseIsClosned();//here you get the writeable database and store it somewhere(I do it for multiple databases). 
      try { 
       row.insert(getDB()); 
       success = true; 
      } catch (Exception e) { 
       Log.e(TAG, "Error:" + e.getMessage(), e); 
      } 
     } 
     return success; 
    } 

    @Override 
    public boolean update(IRow row) { 
     boolean success = false; 
     synchronized (lock) { 
      openDatabaseIfClosed(); 
      try { 
       row.update(getDatabase()); 
       success = true; 
      } catch (Exception e) { 
       Log.e(TAG, "Your error message:" + e.getMessage(), e); 
      } 
     } 
     return success; 
    } 
} 


Ваша строка будет выглядеть так:

interface IRow 
{ 
    void insert(SqliteDatabase db); 
    void update(SqliteDatabase db); 
    void delete(SqliteDatabase db); 
    void find(SqliteDatabase db); 
} 


Далее реализовать что-то вроде

MyRow implements IRow 
{ 
    public(to be accessed from outside upon creation) static final String COLUMN_ID = "_id"; 
    public static final string COLUMN_VALUE = "value"; 
    //here you do your implementation, with columns and stuff like that. 
    //Of course you need to take care of the creation of tables 
    update(SqliteDatabase db){//TODO} 
    insert(SqliteDatabase db){//TODO} 
    delete(SqliteDatabase db){//TODO} 
    //for update/delete/insert you can here implement the values assemble method. 
} 

Как вы могли заметить, то YourTable в этом случае что-то под названием MyColumn и содержит некоторые столбцы, которые обычно будут частью MyRow, поэтому при обновлении значений вы можете получить доступ к столбцам. В принципе, вам просто нужно создать таблицы, и все готово. Это работает/работает на меня по 3-4 проектам без каких-либо ошибок.
Я предпочитаю этот способ из-за того, что многие вещи могут ошибиться при передаче строк и т. Д.

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