日韩性视频-久久久蜜桃-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 数据库存储的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩av高清无码 | 两个女人互添下身爱爱 | 亚洲av无码国产精品久久久久 | 色婷婷综合久久久久中文 | 欧美在线你懂的 | 免费一级黄色大片 | 青青草视频播放 | 大又大粗又爽又黄少妇毛片 | www.免费av| 超碰成人免费 | 国产亚洲精品久久 | 亚洲欧美日韩第一页 | 国产女女调教女同 | 波多野结衣久久精品 | 成人国产精品久久久网站 | 香蕉视频 | 狠狠人妻久久久久久综合蜜桃 | 久久不射视频 | 欧美bdsm调教视频 | 一出一进一爽一粗一大视频 | 色福利hd写真video | 高中男男gay互囗交观看 | 大陆农村乡下av | 欧美精品亚洲精品 | 国产成人在线视频免费观看 | 天天草夜夜 | 五月天av网站 | 亚欧美在线 | 国模叶桐尿喷337p人体 | 成人美女在线观看 | 91精东传媒理伦片在线观看 | 人妻一区二区在线 | 亚洲成人网在线播放 | 亚欧美色图 | 亚洲经典久久 | 91丨porny丨国产| 亚洲大逼| 欧美精品久久久久久久多人混战 | 精久久| 天天天天天天操 | 精品国产日本 | 亚洲成人7777 | 成熟妇人a片免费看网站 | 国产主播自拍av | 日本午夜小视频 | 天天爽天天色 | 国产r级在线 | 你懂得在线视频 | 韩国黄色视屏 | 亚洲天堂免费观看 | 欧美s码亚洲码精品m码 | 中文字幕在线观看一区二区三区 | 大黄网站在线观看 | 狠狠躁日日躁夜夜躁 | 久久综合色视频 | 一区二区三区黄 | 精品黄网 | 亚洲美女视频一区 | 成人在线播放网站 | 日韩特黄 | 可以直接观看的av | 婷婷激情综合网 | 国产精品久久久久久久久免费看 | 日本综合在线 | 九七人人爽| 美国成人av | 波多野结衣午夜 | 婷婷激情综合 | 亚洲看片网站 | 天天射夜夜撸 | 免费观看一区二区三区视频 | 欧美极品第一页 | 嫩草视频入口 | 91吃瓜在线 | 深夜福利网址 | 国产99re| 精品人妻无码一区二区色欲产成人 | 97超在线 | 久久久国产精品免费 | 欧美女优在线 | 亚洲欧洲一区二区在线观看 | 国产女人水真多18毛片18精品 | 毛片国产精品 | 午夜在线国产 | 91免费版黄 | 国产色综合视频 | 亚洲最大的网站 | 国产精品亚洲天堂 | 97无码精品人妻 | 色播导航| 国产精品视频专区 | 国产精品久久久久久久久久久久 | 国产精品伦理一区二区 | 黑人高潮一区二区三区在线看 | 毛片哪里看 | 欧美怡红院视频 | 国产玖玖 | 在线观看亚洲国产 | 成人tiktok黄短视频 |