2017-11-21 4 views
-1

私のSQLiteDatabaseは、UUID、Title、Dateという3つのエントリで正常に動作していましたが、SQLiteDatabaseに列を追加しましたが、これ以上読み取れません

わかりました。私は0を読んでいます。-1は列を読み取ることができないことを意味しますが、すべての列名を正しく綴ります。

CrimeCursorWrapper.java

public List<Crime> getCrimes() { 
     List<Crime> crimes = new ArrayList<>(); 
     CrimeCursorWrapper cursor = queryCrimes(null, null); 
     try { 
      cursor.moveToFirst(); 
      while (!cursor.isAfterLast()) { 
       crimes.add(cursor.getCrime()); 
       cursor.moveToNext(); 
      } 
     } finally{ 
      cursor.close(); 
     } 
     return crimes; 
    } 

CrimeLab.java:

public Crime getCrime(UUID id) { 
     CrimeCursorWrapper cursor = queryCrimes(
       CrimeTable.Cols.UUID + " = ?", 
       new String[] { id.toString() } 
     ); 
     try { 
      if (cursor.getCount() == 0) { 
       return null; 
      } 
      cursor.moveToFirst(); 
      return cursor.getCrime(); 
     } finally { 
      cursor.close(); 
     } 
    } 

private static ContentValues getContentValues(Crime crime) { 
     ContentValues values = new ContentValues(); 
     values.put(CrimeTable.Cols.UUID, crime.getId().toString()); 
     values.put(CrimeTable.Cols.TITLE, crime.getTitle()); 
     values.put(CrimeTable.Cols.DATE, crime.getDate().getTime()); 
     values.put(CrimeTable.Cols.ACTTYPE, crime.getActType().toString()); 
     values.put(CrimeTable.Cols.PLACE, crime.getPlace().toString()); 
     values.put(CrimeTable.Cols.DURATION, crime.getDuration().toString()); 
     values.put(CrimeTable.Cols.COMMENT, crime.getComment().toString()); 
     return values; 
    } 

    private CrimeCursorWrapper queryCrimes(String whereClause, String[] whereArgs) { 
     Cursor cursor = mDatabase.query(
       CrimeTable.NAME, 
       null, // Columns - null selects all columns 
       whereClause, 
       whereArgs, 
       null, // groupBy 
       null, // having 
       null // orderBy 
     ); 
     return new CrimeCursorWrapper(cursor); 
    } 

CrimeCursorWrapper.java:

public class CrimeCursorWrapper extends CursorWrapper{ 

    public CrimeCursorWrapper(Cursor cursor) { 
     super(cursor); 
    } 

    public Crime getCrime() { 
     String uuidString = getString(getColumnIndex(CrimeTable.Cols.UUID)); 
     String title = getString(getColumnIndex(CrimeTable.Cols.TITLE)); 
     long date = getLong(getColumnIndex(CrimeTable.Cols.DATE)); 
     String actType = getString(getColumnIndex(CrimeTable.Cols.ACTTYPE)); 
     String place = getString(getColumnIndex(CrimeTable.Cols.PLACE)); 
     String duration = getString(getColumnIndex(CrimeTable.Cols.DURATION)); 
     String comment = getString(getColumnIndex(CrimeTable.Cols.COMMENT)); 


     Crime crime = new Crime(UUID.fromString(uuidString)); 

     crime.setTitle(title); 
     crime.setDate(new Date(date)); 
     crime.setActType(actType); 
     crime.setPlace(place); 
     crime.setDuration(duration); 
     crime.setComment(comment); 

     return crime; 
    } 

} 

Crime.java:

public class Crime { 

    private UUID mId; 
    private String mTitle; 
    private Date mDate; 
    private String mActType; 
    private String mPlace; 
    private String mDuration; 
    private String mComment; 


    public Crime() { 
     this(UUID.randomUUID()); 
    } 

    public Crime(UUID id) { 
     mId = id; 
     mDate = new Date(); 
    } 

    public UUID getId() { 
     return mId; 
    } 
    public String getTitle() { 
     return mTitle; 
    } 
    public void setTitle(String title) { 
     mTitle = title; 
    } 
    public Date getDate() { 
     return mDate; 
    } 
    public void setDate(Date date) { 
     mDate = date; 
    } 
    public String getPhotoFilename() { 
     return "IMG_" + getId().toString() + ".jpg"; 
    } 
    public String getActType() { 
     return mActType; 
    } 
    public void setActType(String actType) { 
     mActType = actType; 
    } 
    public String getPlace() { 
     return mPlace; 
    } 
    public void setPlace(String place) { 
     mPlace = place; 
    } 
    public String getDuration() { 
     return mDuration; 
    } 
    public void setDuration(String duration) { 
     mDuration = duration; 
    } 
    public String getComment() { 
     return mComment; 
    } 
    public void setComment(String comment) { 
     mComment = comment; 
    } 

} 
+2

「私はこのエラーを受け取りました」何のエラー?あなたはエラーを投稿できますか? – Korashen

答えて

0

"CAN"の理由:物理的なモバイルデバイスをデバッグに使用する場合、コード内のデータベーステーブルを変更した後、モバイルデバイスからアプリケーションのデータを削除し、apkを再インストールします(またはデバッグまたは実行ボタンを押してください) 。データベースファイルはAndroid Studioによって自動的に更新されません。

+0

私はエミュレータを使用してアプリをテストしていますが、メニューからアプリをアンインストールしましたが、それでも同じ問題があります。 –

+0

これを試してみましょう。アプリケーションをアンインストールせず、設定>アプリケーション設定>アプリケーション>ストレージ>データのクリアに移動してください –

0

列を追加した後にデータベースのバージョンを変更しましたか?それが必須です。

関連する問題