您好,登錄后才能下訂單哦!
這篇文章主要講解了“Android怎么把正確的把數據插入到數據庫中”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android怎么把正確的把數據插入到數據庫中”吧!
定義模式和約束
SQL數據的一個主要原則是模式:數據庫是如何組織的一個正式聲明。模式被反映在你用于創建數據庫的SQL語句中。你可能會發現,它有助于創建伴侶類,即約束(contract)類,這個類使用系統性的和自記錄的方式來明確的指定你的模式的布局。
約束(contract)類是一個定義URIs、表名和列名的常量容器。在相同包中的所有類都可以使用這個約束類中的常量。這樣就會一處修改,全局有效。
組織約束類的一個好方法是把定義放到類的根層次,以便它對整個數據庫有效。
注意:通過實現BaseColumns接口,你的內部類會繼承一個叫做_ID的主鍵,某些Android類(如游標適配器)會希望有這個字段。它不是必須的,但是,這個字段會幫助你的數據庫跟Android框架更和諧的工作。
例如,以下代碼片段定義一個表的表名和列名:
publicstaticabstractclassFeedEntryimplementsBaseColumns{
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";
...
}
為了防止約束類被意外的實例化,它的構造器是私有的:
// Prevents the FeedReaderContract class from being instantiated.
private FeedReaderContract() {}
使用SQL輔助器來創建數據庫
一旦你定義了你的數據庫,你就應該實現創建和維護數據庫以及表的方法。以下是創建和刪除表的典型語句:
privatestaticfinalString TEXT_TYPE ="
TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + FeedReaderContract.FeedEntry.TABLE_NAME + " (" +
FeedReaderContract.FeedEntry._ID + " INTEGER PRIMARY KEY," +
FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
FeedReaderContract.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 " + TABLE_NAME_ENTRIES;
就像你在設備的內部存儲器上保存文件那樣,Android會在跟應用程序關聯的私有的硬盤空間中保存你的數據庫。因為默認情況下,這塊區域對其他應用程序來說是不可訪問的,所以你的數據是安全的。
使用SQLiteOpenHelper類中的一組API是有益的。因為當因使用這個類來獲取數據庫的引用時,系統只會在需要時和應用程序的非啟動期間來執行潛在的創建和更新數據庫的長時操作。你需要做所有工作就是調用getWritableDatabase()或getReadableDatabase()方法。
注意:因為它們是長時操作,所以必須確保在后臺的線程中調用getWritableDatabase()和getReadableDatabase()方法,如在AsyncTask或IntentService中調用。
要使用SQLiteOpenHelper,就要繼承SQLiteOpenHelper類來創建一個子類,并重寫onCreate()、onUpgrade()和onOpen()回調方法,還可以選擇性的實現onDowngrade()回調方法。
例如,以下是SQLiteOpenHelper類的一個子類實現:
publicclassFeedReaderDbHelperextendsSQLiteOpenHelper{
// 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);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
}
使用以下方法來訪問你的數據庫:
FeedReaderDbHelper mDbHelper =newFeedReaderDbHelper(getContext());
感謝各位的閱讀,以上就是“Android怎么把正確的把數據插入到數據庫中”的內容了,經過本文的學習后,相信大家對Android怎么把正確的把數據插入到數據庫中這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。