2016-05-31 103 views
0

我有一個問題得到一個更新查詢中使用下面的代碼工作:Android的SQLite的更新查詢問題

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

你比較日期的想法作爲字符串,並且您的字符串不是「最重要的第一」排序。因此'2000年5月11日'將測試爲'大於'11月6日'',因爲'm'在字母表中的'j'之後。你永遠不應該在數據庫中存儲日期/時間作爲字符串,特別是當你需要做基於日期的數學/比較時。 –

回答

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(); 
} 

注意:如果你仍然得到這個問題,那麼在添加catch塊線如上打印例外,所以你會得到關於問題

+0

謝謝你,我的朋友非常好是不得不添加try/catch很多謝謝 –