2017-05-31 15 views
-4

AndroidでSQLiteデータベースを使用する方法を学びました。そして、私は把握できない1つのエラーがあります。SQLiteデータベースは文字列を "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

それがデータベースに表示されている方法です、すべてはこの文字列を除いて良いです。私は私の講義に従うところから1冊の本を持っています。それは本のコードと同じで、うまくいきません。これが私の価値をデータベースから取り戻す方法です。

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を2回に設定しています。一度それがUUIDである。一度それはisSolved()に応じて0または1です。

2番目のオカレンスには別の列名が必要と仮定します。

+0

ちょっと分かりました。検索とデバッグの4時間後!どのような間違い... –

関連する問題