2015-09-05 2 views
0

Я отлаживал эту проблему часами, и я огляделся и не могу найти решение. Когда я запускаю код, все работает отлично, за исключением того, что insertNotification не вставляет новое значение в таблицу уведомлений, и никаких исключений не возникает. Почему это?Android Notification не входит в базу данных SQLite

public void updateLaw(int lawID, String newSummary, String newFullText){ 

    int tagID = getTagID(lawID); 
    String tagName = getTagName(tagID); 
    int categoryID = getCategoryID(tagID); 
    String categoryName = getCategoryName(categoryID); 

    openToWrite(); 

     ContentValues contentValues = new ContentValues(); 
     contentValues.put(Constants.KEY_SUMMARY, newSummary); 
     if(newFullText!=null) 
      contentValues.put(Constants.KEY_FULL_TEXT, newFullText); 

     mSqLiteDatabase.update(Constants.TABLE_LAW, contentValues, Constants.KEY_LAW_ID + "=" + lawID, null); 
    close(); 
    try { 
     insertNotification(categoryName, tagName + " has changed in " + getLocationName(getLocationID(lawID))); 
    } 
    catch(Exception e){ 
     exceptionHandler.alert(e, "UpdateLaw()"); 
    } 

} 

public void insertNotification(String type, String text){ 

    openToWrite(); 
    try { 
     mSqLiteDatabase.execSQL("DROP TABLE IF EXISTS notification"); 
     String tableQuery = "CREATE TABLE "+Constants.TABLE_NOTIFICATION+" (\n" + 
      Constants.KEY_NOTIFICATION_ID +" INTEGER PRIMARY KEY AUTOINCREMENT," + 
       Constants.KEY_LAW_ID + " INT,\n" + 
      Constants.KEY_NOTIFICATION_TEXT + " VARCHAR,\n" + 
      Constants.KEY_NOTIFICATION_TIME + " DATETIME DEFAULT CURRENT_TIMESTAMP,\n" + 
      Constants.KEY_NOTIFICATION_STATUS + " VARCHAR\n" + 
      ");\n"; 
     mSqLiteDatabase.execSQL(tableQuery); 
    } 

    catch(Exception e){ 
     exceptionHandler.alert(e, "insertNotification()"); 
    } 

    try { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(Constants.KEY_NOTIFICATION_TYPE, type); 
     contentValues.put(Constants.KEY_NOTIFICATION_TEXT, text); 
     contentValues.put(Constants.KEY_NOTIFICATION_STATUS, "unread"); 

     mSqLiteDatabase.insert(Constants.TABLE_NOTIFICATION, null, contentValues); 
    } 

    catch(Exception e){ 
     exceptionHandler.alert(e, "insertNotification()"); 
    } 
    close(); 

} 
+0

Bit запутался в момент вставки вы сбросив таблицу и воссоздавать это еще одна вещи в таблице уведомлений в момент вставки вы не обеспечивая значения первичного ключа столбца – Pavan

+0

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

+0

Где находятся переменные 'categoryID' и' tagID', если вы не передаете их в качестве аргументов в методе 'updateLaw'? Как назначаются значения 'categoryName' и' tagName', если вы вызываете методы getter с нулевыми аргументами? – user5292387

ответ

-1

try close(); и затем openToWrite(); перед вставкой новой записи.

public void insertNotification(String type, String text){ 

openToWrite(); 
try { 
    mSqLiteDatabase.execSQL("DROP TABLE IF EXISTS notification"); 
    String tableQuery = "CREATE TABLE "+ Constants.TABLE_NOTIFICATION + " (" + 
     Constants.KEY_NOTIFICATION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      Constants.KEY_LAW_ID + " INT, " + 
     Constants.KEY_NOTIFICATION_TEXT + " VARCHAR, " + 
     Constants.KEY_NOTIFICATION_TIME + " DATETIME DEFAULT CURRENT_TIMESTAMP, " + 
     Constants.KEY_NOTIFICATION_STATUS + " VARCHAR " + 
     ")"; 
    mSqLiteDatabase.execSQL(tableQuery); 
} 

catch(Exception e){ 
    exceptionHandler.alert(e, "insertNotification()"); 
} 

try { 
close(); 
openToWrite(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(Constants.KEY_NOTIFICATION_TYPE, type); 
    contentValues.put(Constants.KEY_NOTIFICATION_TEXT, text); 
    contentValues.put(Constants.KEY_NOTIFICATION_STATUS, "unread"); 

    mSqLiteDatabase.insert(Constants.TABLE_NOTIFICATION, null, contentValues); 
} 

catch(Exception e){ 
    exceptionHandler.alert(e, "insertNotification()"); 
} 
close(); 

}

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