私のAndroidアプリでsqliteデータベースを作成しようとしています。テーブルの作成と値の挿入は完璧に機能しますが、dbから値を取得(選択)しようとすると、
android.database.sqlite.SQLiteException: no such column: rowId (code 1): , while compiling: SELECT rowId, firstName, lastName, photoPrefix;, photoSuffix;, hasPhoto FROM friends WHERE rowId = ?
これが私のSQLiteOpenHelper継承クラスの属性です
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "GroupDB";
private static final String TABLE_GROUPS = "groups";
private static final String KEY_ID = "rowId";
private static final String KEY_NAME = "name";
private static final String KEY_FRIENDS = "friends";
private static Context context;
private static final String[] COLUMNSGroup = { KEY_ID, KEY_NAME,
KEY_FRIENDS };
private static final String TABLE_FRIENDS = "friends";
private static final String KEY_FIRST_NAME = "firstName";
private static final String KEY_LAST_NAME = "lastName";
private static final String KEY_PHOTO_PREFIX = "photoPrefix;";
private static final String KEY_PHOTO_SUFFIX = "photoSuffix;";
private static final String KEY_HAS_PHOTO = "hasPhoto";
private static final String[] COLUMNSFriends = { KEY_ID, KEY_FIRST_NAME,
KEY_LAST_NAME, KEY_PHOTO_PREFIX, KEY_PHOTO_SUFFIX, KEY_HAS_PHOTO };
onCreateメソッド:
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_GROUP_TABLE = "CREATE TABLE groups ( "
+ "rowId INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, "
+ "friends TEXT )";
db.execSQL(CREATE_GROUP_TABLE);
String CREATE_FRIEND_TABLE = "CREATE TABLE friends ( " + "rowId TEXT, "
+ "firstName TEXT, " + "lastName TEXT, " + "photoPrefix TEXT, "
+ "photoSuffix TEXT, " + "hasPhoto INTEGER )";
db.execSQL(CREATE_FRIEND_TABLE);
Log.d("DB", CREATE_GROUP_TABLE);
Log.d("DB", CREATE_FRIEND_TABLE);
}
正常に機能しているaddFriendメソッド:
public void addFriend(Friends friend) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, friend.id);
values.put(KEY_FIRST_NAME, friend.firstName);
values.put(KEY_LAST_NAME, friend.LastName);
values.put(KEY_PHOTO_PREFIX, friend.photoPrefix);
values.put(KEY_PHOTO_SUFFIX, friend.photoSuffix);
values.put(KEY_HAS_PHOTO, friend.hasPhoto ? 1 : 0);
db.insert(TABLE_FRIENDS, null,values);
}
db.close();
}
そしてエラーを出すgetFriendメソッド
public Friends getFriend(String id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_FRIENDS, //THIS
COLUMNSFriends, //LINE
" rowId = ?", //GIVES
new String[] { id }, null, null, null, null); //EXCEPTION
if (cursor != null)
cursor.moveToFirst();
Friends friend = new Friends();
friend.id = cursor.getString(0);
friend.firstName = cursor.getString(1);
friend.LastName = cursor.getString(2);
friend.photoPrefix = cursor.getString(3);
friend.photoSuffix = cursor.getString(4);
friend.hasPhoto = cursor.getString(5).equals("1") ? true : false;
return friend;
}
この部分を見逃しました。「photoSuffix;」を変更してください。「photoSuffix」へ; および "photoPrefix;"; 問題を解く。Raghunandanに感謝します!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加