2016-05-31 3 views
0

У меня возникли проблемы, чтобы получить запрос на обновление, чтобы работать, используя следующий код:Android SQLite Update Issue запрос

ExternalDbOpenHelper dbOpenHelper = new   
ExternalDbOpenHelper(MainBarcode.this, DB_NAME); 
database = dbOpenHelper.getWritableDatabase(); 
String testString = "11"; 
String Datetime; 
Calendar c = Calendar.getInstance(); 
SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); 
Datetime = dateformat.format(c.getTime()); 
try 
{ 
    ContentValues values = new ContentValues(); 
    values.put("TIMEOUT",Datetime); 
    int int1 = Integer.valueOf(testString); 
    database.update(TABLE_NAME, values, FRIEND_ID + " = ?",new String[] { String.valueOf(testString) }); 

} catch (Exception e) {     
} 
database.close(); 

Моя база данных имеет следующие столбцы

TABLE_NAME = "LOG" 

FRIEND_ID = AUTO INCREMENT NUMBER 

FRIEND_TIMEOUT = TIME IN A STRING 

Я пытаюсь обновить столбец FRIEND_TIMEOUT с текущим временем и датой, указав Friend_ID.

Идентификационный номер - это строка, и я пытаюсь передать ее в запрос на обновление.

Запрос выполняется, но не обновляет запись.

Любые идеи, в которых я ошибаюсь?

+1

вы сравниваете даты как строки, и ваши строки не в порядке «наиболее значимых-первых». Поэтому '11-май-2000' будет тестироваться как LARGER, чем' 11-jun-2016', потому что 'm' появляется после' j' в алфавите. вы никогда не должны хранить даты/время как строки в db, особенно когда вам нужно делать математику/сравнение по дате. –

ответ

0

Я думаю, что вы устанавливаете неверное имя поля для обновления. Вы установили «TIMEOUT», а ваше имя столбца «FRIEND_TIMEOUT». См следующий код

SQLiteDatabase database = databaseHelper.getWritableDatabase(); 
    String testString = "1"; 
    String Datetime; 
    Calendar c = Calendar.getInstance(); 
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); 
    Datetime = dateformat.format(c.getTime()); 
    try { 
     ContentValues values = new ContentValues(); 
     values.put("FRIEND_TIMEOUT", Datetime); 
     int int1 = Integer.valueOf(testString); 
     long result = database.update("LOG", values, "FRIEND_ID" + " = ?", new String[]{String.valueOf(testString)}); 
     Log.d("result", "" + result); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    database.close(); 
} 

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

+0

Спасибо, мой frien отлично Да, нужно добавить try/catch много спасибо –