2017-05-31 195 views
-4

我剛剛學會了如何在Android中使用SQLite數據庫。我有一個錯誤,我不知道。SQLite數據庫將String保存爲「0」

當我嘗試在我的sqlite數據庫中保存字符串時,它始終將其保存爲「0」,而不管使用哪個字符串作爲輸入。這是我的代碼示例。

ContentValues values = new ContentValues(); 
    Log.i("CrimeLab", "put : "+crime.getId().toString()); 
    values.put(CrimeDbSchema.CrimeTable.Cols.UUID, "31b0a98a-4089-46de-8325-4ec673bbd713"); // crime.getId().toString() 
    Log.i("CrimeLab", "take: "+values.getAsString(CrimeDbSchema.CrimeTable.Cols.UUID)); 
    values.put(CrimeDbSchema.CrimeTable.Cols.TITLE, crime.getTitle()); 
    values.put(CrimeDbSchema.CrimeTable.Cols.DATE, crime.getDate().getTime()); 
    values.put(CrimeDbSchema.CrimeTable.Cols.UUID, crime.isSolved() ? 1 : 0); 

我有階級犯罪有它的唯一UUID,標題,日期,如果犯罪得到解決。一切都完好保存,但只有UUID.toString()被保存在數據庫中爲「0」。無論我嘗試將它放在哪個字符串中,都會將其保存爲「0」,這是圖片。

enter image description here

這裏是如何顯示在數據庫中,一切都只是這串好。我有一本書,從我的講座開始,這本書的代碼是相同的,它不起作用。這就是我從數據庫中獲取價值的方式。

public class CrimeCursorWrapper extends CursorWrapper 
{ 
public CrimeCursorWrapper(Cursor cursor) 
{ 
    super(cursor); 
} 

public Crime getCrime(){ 

    String uuidString = getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.UUID)); 
    String title = getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.TITLE)); 
    long date = getLong(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.DATE)); 
    int isSolved = getInt(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.SOLVED)); 
// And so on. 

回答

3

一切都完美地保存,但只根據UUID.toString()作爲 「0」 保存在數據庫中。

這是因爲你還沒有解決任何犯罪,你可能在你的代碼中有一個錯字。

在您的代碼片段中,您正在設置CrimeDbSchema.CrimeTable.Cols.UUID兩次。一旦它是UUID。取決於isSolved(),它一旦爲0或1。

我會假設第二次出現需要不同的列名稱。

+0

只是想通了。經過4個小時的搜索和調試!真是個錯誤...... –