2011-11-14 29 views
2

當我嘗試將某些條件值放入ContentValues變量中時,會以String形式插入。ContentValues將值存儲爲sql條件

contentValues = new ContentValues(); 
contentValues.put("DLM", "julianday('now', 'localtime')"); 

執行

count = db.update(TABLE_NAME, contentValues, selection, selectionArgs); 

領域的更新後,但值不正確。我需要在字段中有數字日期,而不是字符串。

如果我需要與計算值更新現有領域的另一個問題:

UPDATE tbl SET field=field*2 

當我把價值像

contentValues.put("field", "field*2"); 

它已經把該值作爲字符串。我如何才能獲得我真正需要的價值?

+0

只要把你想要的數值,現在你是導致它成爲帶「」引號的字符串的人。 – Carnal

+0

julianday('now','localtime')的數值是多少?我知道有可能轉換成數字,但這不是我的最佳 –

+0

這是你自己創建的方法,我猜?讓它返回你需要的字符串,但是我會創建一個日曆,設置當天的具體日期和時間,然後將其轉換爲放入數據庫的時間戳。 – Carnal

回答

1

我認爲,而不是update()方法,你應該使用execSQL方法,它允許你完全控制查詢語法。而不是計算查詢字段,你可能會考慮creating triggers

0

您需要輸入日期,如:

日曆CAL = Calendar.getInstance();

ContentValues values = new ContentValues(); 
values.put("DLM", String.format("%1$te-%1$tB-%1$tY",cal));//this will insert date with format 2 July 2011 

對於像fieldValue方法* 2更新值,

你需要獲取從表舊值,然後你需要通過它喜歡:

values.put("field_name",new_field_value);