在合同類,成員創建和維護數據庫是私有的字符串(SQL_CREATE_ENTRIES
和SQL_DELETE_ENTRIES
)。定義在另一個文件中DBHelper
類,我只是不能訪問該成員就出現在該文檔的方式(在FeedReaderDbHelper類只使用他們,如果他們裏面範圍)
那些private
領域都應該被放置進入SQLiteOpenHelper
班。它們在該類的範圍內用於創建和刪除由該類管理的表。你不應該在其他地方使用這些SQL字符串。
例如,
public class FeedReaderDbHelper extends SQLiteOpenHelper {
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + FeedEntry.TABLE_NAME + " (" +
FeedEntry._ID + " INTEGER PRIMARY KEY," +
FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
... // Any other options for the CREATE command
")";
private static final String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS " + FeedEntry.TABLE_NAME;
// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "FeedReader.db";
public FeedReaderDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
/* Inner class that defines the table contents */
public static abstract class FeedEntry implements BaseColumns {
public static final String TABLE_NAME = "entry";
public static final String COLUMN_NAME_ENTRY_ID = "entryid";
public static final String COLUMN_NAME_TITLE = "title";
public static final String COLUMN_NAME_SUBTITLE = "subtitle";
...
}
}
還有其他的解決方案,你可以使用像境界Java來處理你的數據庫的需求;它更簡單,並以優化的方式爲您處理所有事情 – Eenvincible
* setter/getters不推薦用於Android * - 不知道您在哪裏閱讀... –