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

歡迎訪問 生活随笔!

生活随笔

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

数据库

数据存储之 SQLite 数据库操作(一)

發布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据存储之 SQLite 数据库操作(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這一講我們來講解一下數據庫的存儲方式 ,SQLite數據庫屬于文本型的數據庫,它是以文本的形式來保存的。

1. SQLite 數據庫介紹

查看 Android API文檔中?SQLite?的介紹
??? Android提供了對 SQLite 數據庫的完全支持,應用程序中的任何類都可以通過名稱來訪問任何的數據庫,但是應用程序之外的就不能訪問。
建議創建一個新的數據庫的方式就是創建一個子類繼承 SQLiteOpenHelper 然后重寫它的 onCreate() 方法,這樣你就可以在數據庫中執行 SQLite的語法命令來創建表了 查看API文檔中?SQLiteOpenHelper?類的介紹
??? 這是一個幫助類,作用是管理數據庫的創建和版本的管理,你可以創建一個子類來實現 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) 方法, onOpen(SQLiteDatabase)可以選擇是否要實現。這個類負責在數據庫存在的情況下,打開數據庫,如果它不存在則會創建數據庫,并且在必要的時候更新它。事務也會被使用到,這樣才能確保數據庫總是在合理的狀態。
??????? 查看它的方法列表: ??????? getReadableDatabase() 可以通過這個方法進行數據庫的創建和打開

2. 程序實現

1) DBOpenHelper.java 用來更新或者創建數據庫使用

[java]?view plaincopy
  • package?com.android.sqlitedemo.db;??
  • ??
  • import?android.content.Context;??
  • import?android.database.DatabaseErrorHandler;??
  • import?android.database.sqlite.SQLiteDatabase;??
  • import?android.database.sqlite.SQLiteOpenHelper;??
  • import?android.database.sqlite.SQLiteDatabase.CursorFactory;??
  • ??
  • public?class?DBOpenHelper?extends?SQLiteOpenHelper?{??
  • ??
  • ????/**?
  • ?????*?查看SQLiteOpenHelper?api文檔的,它的構造方法?
  • ?????*?public?SQLiteOpenHelper?(Context?context,?String?name,?SQLiteDatabase.CursorFactory?factory,?int?version)?
  • ?????*?創建一個幫助類的對象來創建,打開,或者管理一個數據庫,這個方法總是會快速的返回,?
  • ?????*?這個數據庫實際上是沒有被創建或者打開的,直到getWritableDatabase()?或者?getReadableDatabase()?方法中的一個被調用時才會進行創建或者打開?
  • ?????*?參數:?
  • ?????*???context?:?上下文對象,用來打開或者創建數據庫?
  • ?????*???name?:?數據庫文件的名稱,如果是創建內存中則位null?,?
  • ?????*???factory?:?用來創建游標對象,默認的是為null?
  • ?????*???version?:?數據庫的版本號(以版本數字號1開始),如果數據庫比較舊,就會用?onUpgrade(SQLiteDatabase,?int,?int)?方法來更新數據庫,?
  • ?????*?????????????如果數據庫比較新,就使用?onDowngrade(SQLiteDatabase,?int,?int)??方法來?回退數據庫?
  • ?????*?【注意】?:?我們聲明完這個構造方法之后,包括初始化它的名稱?和?版本之后,實際上它還是沒有馬上被創建起來的。?
  • ?????*/??
  • ????private?static?String?name?=?"mydb.db";?//表示數據庫的名稱??
  • ????//private?static?int?version?=?1;?//表示數據庫的版本號??
  • ????private?static?int?version?=?2;?//更新數據庫的版本號,此時會執行?onUpgrade()方法??
  • ????public?DBOpenHelper(Context?context)?{??
  • ????????super(context,?name,?null,?version);??
  • ????????//?TODO?Auto-generated?constructor?stub??
  • ????}??
  • ??
  • ????//當數據庫創建的時候,是第一次被執行,完成對數據庫的表的創建??
  • ????@Override??
  • ????public?void?onCreate(SQLiteDatabase?db)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????//SQLite?數據創建支持的數據類型:?整型數據,字符串類型,日期類型,二進制的數據類型??
  • ????????//數據庫這邊有一個特點,就是SQLite數據庫中文本類型沒有過多的約束,也就是可以把布爾類型的數據存儲到文本類型中,這樣也是可以的??
  • ????????String?sql?=?"create?table?person(id?integer?primary?key?autoincrement,name?varchar(64),address?varchar(64))";??
  • ????????db.execSQL(sql);?//完成數據庫的創建???
  • ????}??
  • ??
  • ????/**?
  • ?????*?onUpgrade()?方法是在什么時候被執行呢??
  • ?????*?查看API文檔中?onUpgrade()介紹?
  • ?????*???當數據庫需要升級時調用這個方法[在開發過程中涉及到數據庫的設計存在缺陷的時候進行升級,不會損壞原來的數據],這種實現方式會使用方法來減少表,或者增加表,或者做版本更新的需求。?
  • ?????*?在這里就可以執行?SQLite?Alter語句了,你可以使用?ALTER?TABLE?來增加新的列插入到一張表中,你可以使用?ALTER?TABLE?語句來重命名列或者移除列,或者重命名舊的表。?
  • ?????*?你也可以創建新的表然后將舊表的內容填充到新表中。?
  • ?????*???此方法會將事務之內的事件一起執行,如果有異常拋出,任何改變都會自動回滾操作。?
  • ?????*???參數:?
  • ?????*?????db?:?數據庫?
  • ?????*?????oldVersion?:?舊版本數據庫?
  • ?????*?????newVersion?:?新版本數據庫?
  • ?????*?【注意】:這里的刪除等操作必須要保證新的版本必須要比舊版本的版本號要大才行。[即?Version?2.0?>?Version?1.0?]?所以這邊我們不需要對其進行操作。?
  • ?????*/??
  • ????@Override??
  • ????public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????String?sql?=?"alter?table?person?add?sex?varchar(8)";??
  • ????????db.execSQL(sql);??
  • ????}??
  • ??
  • }??
  • 2) MainActivity.java 主程序的實現

    [java]?view plaincopy
  • package?com.android.sqlitedemo;??
  • ??
  • import?com.android.sqlitedemo.db.DBOpenHelper;??
  • ??
  • import?android.os.Bundle;??
  • import?android.app.Activity;??
  • import?android.content.Context;??
  • import?android.view.Menu;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.widget.Button;??
  • ??
  • public?class?MainActivity?extends?Activity?{??
  • ??
  • ????private?Button?button;??
  • ??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.activity_main);??
  • ????????initComponent();??
  • ????????button.setOnClickListener(new?OnClickListener()?{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????//?TODO?Auto-generated?method?stub??
  • ????????????????DBOpenHelper?helper?=?new?DBOpenHelper(MainActivity.this);??
  • ????????????????//?調用?getWritableDatabase()或者?getReadableDatabase()其中一個方法將數據庫建立??
  • ????????????????helper.getWritableDatabase();??
  • ????????????}??
  • ????????});??
  • ????}??
  • ??
  • ????@Override??
  • ????public?boolean?onCreateOptionsMenu(Menu?menu)?{??
  • ????????//?Inflate?the?menu;?this?adds?items?to?the?action?bar?if?it?is?present.??
  • ????????getMenuInflater().inflate(R.menu.main,?menu);??
  • ????????return?true;??
  • ????}??
  • ??
  • ????private?void?initComponent()?{??
  • ????????button?=?(Button)?findViewById(R.id.button1);??
  • ????}??
  • ??
  • }??
  • 3. 執行結果

    1). 當數據庫版本為 1 (version = 1)的時候數據庫內容如下圖所示


    2). 當數據庫版本為 2 (version = 2)的時候數據庫進行了更新操作,執行了 onUpgrade() 方法,更新后的內容增加了一列,如下圖所示




    原文地址:?http://blog.csdn.net/ahuier/article/details/10417777

    總結

    以上是生活随笔為你收集整理的数据存储之 SQLite 数据库操作(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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