日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 第十一课 SQlite 数据库存储

發布時間:2023/12/10 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 第十一课 SQlite 数据库存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 為了讓我們能夠更加方便的管理數據庫,特意提供了一個SQLiteOpenHelper幫助類,通過借助這個類就可以非常簡單的對數據庫進行創建和升級。

SQLiteOpenHelper是一個抽象類,我們要創建一個自己的幫助類去繼承它。SQLiteOpenHelper有兩個抽象方法,分別是onCreat()和onUpgrade(),我們必須在自己的幫助類里面重這兩個方法,然后分別在這兩個方法中去實現創建、升級數據庫的邏輯。

SQLiteOpenHelper中還有兩個非常重要的實例方法:getReadableDatabase()和getWritableDatabase()。這兩個方法都可以創建或打開一個現有的數據庫,并返回一個可對數據庫進行讀寫操作的對象。不同的是,當數據不可寫入的時候(如磁盤已滿),getReadableDatabase()方法返回的對象將以只可讀的方式去打開數據庫,而getWriteableDatabase()方法將出現異常。

? ? SQLiteOpenHelper中有兩個構造方法可供重寫,一般使用參數少一點的構造方法即可。

這個構造方法中接收4個參數,第一個參數是Context,第二個參數是數據庫名,創建數據庫時使用的就是這里指定的名稱。第三個參數允許我們在查詢數據的時候返回一個自定義的Cursor,一般都是傳入null。第四個參數表示當前數據庫的版本號。

構建出SQLiteOpenHelper的實例之后,再調用他的getReadableDatabase()或getWritableDatabase()方法就能夠創建數據庫了。數據庫文件通常會放在/data/data/<pack name>/database/目錄下。此時,重寫的onCreate()方法也會得到執行。所以通常會在這里去處理一些創建表的邏輯。

新建項目DatabaseTest。

我們希望創建一個名為BookStore.db的數據庫,然后在這個數據庫中新建一張Book表,表中包含主鍵id、作者、價格、頁數和書名等列。創建數據庫表當然還是需要用建表語句的。

新建MyDatabaseHelper類繼承SQLiteOpenHelper,代碼如下:

package com.example.databasetest;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast;/*** Created by ZHJ on 2018/3/3.*/public class MyDatabaseHelper extends SQLiteOpenHelper {public static final String CREATE_BOOK ="create table Book("+"id integer primary key autoincrement,"+"auto text,"+"price real,"+"pages integer"+"name text)";private Context mContext;public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){super(context,name,factory,version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_BOOK);Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }

我們把建表語句定義為一個字符串常量,然后在Oncreate()方法中又調用了SQLiteDatabase的execSQL()方法去執行這條建表語句,并彈出一個Toast提示創建成功,這樣我們在保證創建數據庫的同時還是成功創建Book表。

修改activity_main.xml的代碼,如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/create_database"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Create database"/></LinearLayout>

僅僅加入一個按鈕,用于創建數據庫。最后修改MainActivity中的代碼,如下:

package com.example.databasetest;import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,1);Button createDatabase = (Button) findViewById(R.id.create_database);createDatabase.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {dbHelper.getWritableDatabase();}});} }

我們在onCreate()方法中構建了一個MyDatabaseHelper對象,并且通過構造函數的參數將數據庫指定為BookStore.db,版本號指定為1,然后在Create database按鈕的點擊事件里面調用了getWritableDatabase()方法,這樣,當第一次點擊Create database按鈕時,就會檢測到當前程序中并沒有BookStore.db這個數據庫于是會創建數據庫并調用MyDatabaseHelper中的onCreate()方法,這樣Book表也就得到了創建,然后會彈出一個Toast提示創建成功。再次點擊Create database按鈕時,會發現此時已經存在BookStore.db數據庫了,不會再創建一次。

現在可以運行一下代碼。

怎么樣才能證明數據庫已經創建成功了呢?

我們使用adb shell 來對數據庫和表的創建情況進行檢查。









總結

以上是生活随笔為你收集整理的Android 第十一课 SQlite 数据库存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。