Ваша проблема в том, что вы неправильно написали имя столбца IMAGE_RESOURCE_ID .То есть вы создаете таблицу, используя имя столбца IMAGE_RESCOURCE_ID , но пытаетесь вставить в столбец IMAGE_RESOURCE_ID .
Я бы предложил всегда использовать константы для имен таблиц и столбцов итаким образом, вы определяете их один раз, а затем используете одну и ту же константу для ссылки на элементы.
Поэтому я бы предложил заменить помощника по базам данных LockedInDatabaseHelper.java на: -
public class LockedInDatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "Locked In";
private static final int DB_VERSION = 1;
public static final String TBL_ARTISTS = "ARTISTS";
public static final String COL_ID = BaseColumns._ID;
public static final String COl_NAME = "NAME";
public static final String COL_INTRO = "INTRO";
public static final String COL_IMAGERESOURCEID = "IMAGE_RESOURCE_ID";
public LockedInDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE ARTISTS (" + COL_ID + " INTEGER PRIMARY KEY,"
+ COl_NAME + " TEXT,"
+ COL_INTRO + " TEXT,"
+ COL_IMAGERESOURCEID + " INT)");
insertArtist(db, "Jinx Inkz", "An artist who specializes in portraits and custom pieces", R.drawable.jinx_profile);
insertArtist(db, "Bazooka Zook", "An artist who specializes in clean line work and neo - traditional",R.drawable.zook_profile);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private static void insertArtist(SQLiteDatabase db, String name, String intro, int resourceId){
ContentValues artistInfo = new ContentValues();
artistInfo.put(COl_NAME, name);
artistInfo.put(COL_INTRO, intro);
artistInfo.put(COL_IMAGERESOURCEID, resourceId);
db.insert(TBL_ARTISTS,null, artistInfo);
}
}
Наряду с некоторыми изменениями в ArtistsActivity.java , чтобы также использовать константы, включающие в себя: -
cursor = db.query(LockedInDatabaseHelper.TBL_ARTISTS,
new String[]{LockedInDatabaseHelper.COL_ID, "NAME"},
null, null, null, null, null);
SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(ArtistsActivity.this,
android.R.layout.simple_list_item_1,
cursor,
new String[]{LockedInDatabaseHelper.COl_NAME},
new int[] {android.R.id.text1},
0);
Я считаю, что вышеприведенное сработает. Однако, так как вы изменяете структуру базы данных, вам следует выполнить 1 из следующих действий перед повторным запуском приложения : -
- Удалить / очистить данные приложения (это фактически удаляетбазы данных).
- Удалите приложение (это также эффективно удалит базу данных).