2013-01-11 65 views
0

我有一個案例,我想在SQLite中用database.insert(table,null,values)插入記錄。具有兩個或多個字段的_id值的SQLite插入記錄

TABLE t2 (_id, field1, field2) 
.. 

val.setVal1(null); 
val.setVal2(val2); 
.. 

if(val.getVal1==null){ 
    values.put(field1, _id); 
}else{ 
    values.put(field1, var.val1); 
} 
values.put(field2, var.val2); 

database.insert("t2", null, values); 

是否可以這樣做「values.put(field1,_id);」? _id在database.insert()處生成。

注:我正在尋找一個插入調用的解決方案。使用(field1 = _id)插入和更新行很容易。

+2

不太確定你實際要求的是什麼。你可能想更好地解釋你的目標。 –

+0

'field1',''val1','var','values'這是通用的詞語,阻止我理解您的代碼...也許您嘗試使用一些真實的生活樣本... – WarrenFaith

回答

1

我想我現在看到了。你問你是否可以在特定的SQLite行中輸入值_id字段如果它在val對象中可用。否則,您希望數據庫在插入時爲該列自動創建唯一標識,就像通常所做的一樣。它是否正確?

爲此,我會認真重新考慮這個目的。您不應該爲_id列指定值,因爲它必須是唯一的,否則將會拋出異常。而且,唯一的目的是成爲系統的唯一標識符,所以你個人知道這個價值對你來說應該是沒有用的。

如果您仍然需要此功能,我建議讓您的表中另一個字段(很像_id列,但不),您可以用隨機生成的數字或val.getVal1填入值。

+0

感謝您的回答。但這更多關於「field1」。如果「val.getVal1 == null」我想將「_id」值插入到「field1」中。並且在database.insert(...)調用上生成「_id」值。這是主要問題,如果可以用一個database.insert(...)調用執行此操作。 – Solata

+0

是的,這是可能的。因爲你知道'insert'方法返回插入時創建的'long' id。所以你只需要給這個變量一個名字,然後你可以用它來做任何你需要的。恩。 'lond id = database.insert(「t2」,null,values); val.setVal1(id);' – mango

+0

這是正常的程序。並且要將「id」存儲在「field1」中,我將調用database.update(...)。但是這意味着insert()和update()調用。我的問題是,這是否可能在一個database.insert(...) – Solata

相關問題