2012-08-31 46 views
0

我想從我創建的Android表格中的自動增量獲取行ID(_id) 我可以看到表中的所有其他字段主鍵字段除外。 此標識的表的代碼:如何在Android中的sqllite中查看主鍵ID字段

public static final String ID = "_id"; 
public static final String JOKE = "Joke"; 
public static final String AUTHOR = "Author"; 
public static final String DATE = "Date"; 
public static final String STATUS = "Status"; 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" 
      + ID + " INTEGER PRIMARY KEY AUTOINCREMENT , " 
      + JOKE + " TEXT, " 
      + AUTHOR + " TEXT, " 
      + DATE + " DATE, " 
      + STATUS + " TEXT " 
      + ")");   
    }  

當我試圖接受我收到領域的指數-1領域ID

Cursor cur = context.getContentResolver().query(MyContentProvider.CONTENT_URI, null, null, null, null); 
if (cur.moveToFirst()) { 
     int idColumn = cur.getColumnIndex("_id"); 
     int authorColumn = cur.getColumnIndex("Author"); 
     int statusColumn = cur.getColumnIndex("Status"); 
     int dateColumn = cur.getColumnIndex("Date");  

,我可以看到所有的索引其他領域,但關鍵字段(_id) 任何人都可以幫助我?

回答

0

cur.getColumnIndex("_id")返回-1意味着該列沒有在Cursor存在。假設您將ContentProvider內部的投影(null)傳遞給正確的表,您可以確保該列在數據庫中不存在。

通常的原因是您在稍後階段添加/重命名了該列,但忘記將數據庫升級到新版本。這不會自動發生。

將您的SQLiteOpenHelper中的數據庫版本碰撞或從系統設置中刪除您的應用程序數據以查看是否添加了該列。

1

嘗試讓你的關鍵是這樣的:

id = cur.getInt(0); 
相關問題