Android SQLite 數據庫存學習與總結

Android 系統內置了一個名為 SQLite 數據庫。那么 SQLite 是一種什么樣的數據庫,它有那些特點,應該怎么操作它?下面,讓我們就來認識一下它吧。

1、概念: SQLite 是一種輕量級的關系型數據庫,它不僅支持標準的 SQL 語法,還遵守了數據庫的 ACID (Atomicity原子性、Consistency 一致性 、Isolation 隔離性 、Durability 持久性)事務。

2、特(優)點:

(1) 運算速度快;
(2) 占用資源少(幾百KB);
(3) 能夠存儲量大且結構復雜的數據。

3、常用數據類型及關鍵字:

  • integer(整型)
  • real(浮點型)
  • text(文本類型)
  • blob(二進制類型)
  • primary key 設置屬性為主鍵
  • autoincrement 表示屬性所在的列是自增長的

4、數據庫文件存儲路徑:/data/data/<package_name>/databases/<databases_name>.db

5、常用操作命令:

(1) 打開數據庫:【 sqlite3 <database_name> 】
(2) 查看所有表:【 .table 】
(3) 查看表的構建命令:【 .schema <table_name> 】
(4)退出數據庫編輯: 【 .exit 】 或【 .quit 】

在這里插入圖片描述

6、創建 SQLite 數據庫

第一步: 創建數據庫需要定義一個子類去繼承 SQLiteOpenHelper 抽象類,然后重寫這個類的OnCreate()onUpgrade() 方法,并且還要定義一個構造方法。
其中一個構造方法的參數如下:

  • 參數1:Context
  • 參數2:數據庫名稱
  • 參數3:cursor(光標,查詢數據時可返回,一般填null)
  • 參數4:數據庫版本號(用于升級)

第二步:OnCreate() 方法中調用 execSQL() 方法,然后傳入一個含 SQL 語句的字符串參數作為創建數據庫內容的指令;

第三步: 創建 SQLiteOpenHelper 子類的對象,然后調用對象的 getReadableDatabase()getWritableDatabase() 方法來創建或打開數據庫,這兩個方法都會返回一個可對數據可進行讀寫操作的 SQLiteDatabase 對象。不同的是,當數據庫不可寫入時(如磁盤空間已滿),前者返回的對象將會以只讀的方式打開數據庫,而后者將會出現異常。此外,需要注意的是,當數據庫已存在時,程序是不會再創建數據庫的。

以下是創建數據庫的示例代碼:

public class MyDatabaseHelper extends SQLiteOpenHelper {//定義創建book表格的SQL語句public static final String CREATE_BOOK = "create table Book("+"id integer primary key autoincrement,"+"author text,"+"price real,"+"pages integer,"+"name txt)";private Context mContext;public MyDatabaseHelper(@Nullable Context context, @Nullable String name,@Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {//執行SQL語句db.execSQL(CREATE_BOOK);Toast.makeText(mContext, "Create succeeded!", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
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 v) {dbHelper.getReadableDatabase();}});}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38195.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38195.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

elementPlus自定義el-select下拉樣式

如何在f12元素選擇器上找到下拉div呢&#xff1f; 給el-select添加 :popper-append-to-body"false" 即可&#xff0c;這樣就可以將下拉框添加到body元素中去&#xff0c;否則當我們失去焦點&#xff0c;下拉就消失了&#xff0c;在元素中找不到el-select。剩下就可以…

洛谷 AT_abc169_d [ABC169D] Div Game 題解

思路 想要讓操作次數最多&#xff0c; z z z 就要盡可能小。 由于 z z z 是 N N N 的因數&#xff0c;所以 p p p 就是 N N N 的質因數。 設 N N N 的質因數中有 x x x 個 p p p&#xff0c;則這個 p p p 能執行 y y y 此操作&#xff0c;并且 y y y 滿足 ∑ i …

怎么壓縮圖片大小?6種無需犧牲質量的圖片壓縮方法

經常處理圖片的小伙伴都知道&#xff0c;高質量的圖片往往會占據電腦大量的存儲空間&#xff0c;導致圖片傳輸及存儲的不便。因此&#xff0c;掌握如何壓縮圖片大小變得尤為重要。本文將詳細介紹圖片壓縮的幾種方法&#xff0c;幫助你高效地減小圖片文件大小&#xff0c;讓你的…

使用多智能體辯論微調大型語言模型

F INE - TUNING L ARGE L ANGUAGE M ODELS WITH MULTI - AGENT D EBATE S UPERVISION DebateGPT: Fine-tuning Large Language M

探究Yarn依賴之源:精通why命令的秘籍

&#x1f575;??♂? 探究Yarn依賴之源&#xff1a;精通why命令的秘籍 在現代JavaScript項目開發中&#xff0c;依賴管理是至關重要的一環。Yarn作為領先的包管理器之一&#xff0c;提供了強大的工具來幫助開發者理解項目依賴的起源和結構。yarn why命令就是這樣一個工具&am…

IT專業入門,高考假期預習指南-致有志踏入IT領域的高考少年們

IT專業入門&#xff0c;高考假期預習指南 七月來臨&#xff0c;各省高考分數已揭榜完成。而高考的完結并不意味著學習的結束&#xff0c;而是新旅程的開始。對于有志于踏入IT領域的高考少年們&#xff0c;這個假期是開啟探索IT世界的絕佳時機。 計算機專業是一個綜合性非常強…

【.Net】Web項目部署騰訊云

文章目錄 總述前置準備docker-compose部署普通部署 參考 總述 前置準備 云服務添加端口 另有linux本身防火墻請參考&#xff1a; 【Linux】防火墻命令 需安裝.Net SDK和Asp .Net Runtime 注意&#xff1a; 1、sdk也要不只是runtime 2、是Asp .Net Runtime不是.Net Runtime …

ConcurrentHashMap并發哈希表的設計與實現

ConcurrentHashMap并發哈希表的設計與實現 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 介紹ConcurrentHashMap 1. ConcurrentHashMap的概述 ConcurrentH…

一個計算密集小程序在不同CPU下的表現

本文比較了幾款CPU對同一測試程序的比較結果&#xff0c;用的是Oracle公有云OCI上的計算實例&#xff0c;均分配的1 OCPU&#xff0c;內存用的默認值&#xff0c;不過內存對此測試程序運行結果不重要。 本文只列結果&#xff0c;不做任何評價。下表中&#xff0c;最后一列為測…

搜索型數據庫的技術發展歷程與趨勢前瞻

概述 隨著數字科技的飛速發展和信息量的爆炸性增長&#xff0c;搜索引擎已成為我們獲取信息的首選途徑之一&#xff0c;典型的代表廠商如 Google。然而&#xff0c;隨著用戶需求的不斷演變&#xff0c;傳統的搜索技術已經無法滿足人們對信息的實時性、個性化和多樣性的需求。 …

Qt應用程序中通過上下左右鍵選擇控件,像win桌面圖標選擇一樣

在Qt應用程序中模擬Windows桌面圖標的選擇行為&#xff0c;即通過上下左右鍵來移動選擇控件&#xff0c;你需要管理一個焦點系統&#xff0c;該系統能夠跟蹤哪個控件當前被選中&#xff0c;并根據用戶的鍵盤輸入來更新這個狀態。以下是一個簡化的步驟說明和示例代碼&#xff0c…

華為OD機試(D卷+C卷+A卷+B卷)2024真題目錄(全、新、準)

目錄 專欄導讀華為OD機試算法題太多了&#xff0c;知識點繁雜&#xff0c;如何刷題更有效率呢&#xff1f; 一、邏輯分析二、數據結構1、線性表① 數組② 雙指針 2、map與list3、隊列4、鏈表5、棧6、滑動窗口7、二叉樹8、并查集9、矩陣 三、算法1、基礎算法① 貪心思維② 二分查…

Maven_構建和pom.xml

概述 Maven是為Java項目提供構建和依賴管理支持的工具 構建環節 清理clean 刪除上一次構建的結果 編譯compile Java源程序編譯成*.class字節碼文件 測試test 運行提前準備好的測試程序&#xff0c;執行src/text/java下的junit測試用例 報告site 每次測試后用標準格式記錄和…

射頻校準簡略

射頻電路功能的是否正常&#xff0c;在測試時就可發現&#xff0c;而怎么樣使測試的數據正確&#xff0c;對測試的儀器進行校準是必不可少的環節&#xff0c;校準的目的就是減少測試的誤差&#xff0c;使測試的儀器能夠準確的反映待測件的性能&#xff0c;在校準過程中&#xf…

react學習——20react編寫github案列

1、List組件 index.js import React, {Component} from "react"; //引入樣式 import "./index.css"; export default class List extends Component {render() {const {users,isFirst,isLoding,err}this.propsreturn(<div className"row">…

注意!!2024《信息系統監理師》易混淆知識點來了,趕緊收藏

寶子們&#xff0c;在復習軟考信息系統監理師中&#xff0c;是不是覺得有很多知識點含義比較相近&#xff0c;很多友友剛看的時候估計會像我一樣迷迷糊糊的&#xff0c;作為一個軟考老鳥&#xff0c;在這里給大家整理了信息系統監理師學習過程中易混淆的知識點&#xff0c;大家…

el-tree-transfer插件 入參說明

el-tree-transfer 是一個基于 Vue 和 Element-UI 的樹形穿梭框組件&#xff0c;用于實現左右兩側樹形結構數據的選擇與移動功能。以下是一些基本的入參說明&#xff0c;根據收集到的信息整理得出&#xff1a; title: 類型: Array默認值: [未選, 已選]說明: 穿梭框左右兩側的標題…

Redux 使用及基本原理

什么是Redux Redux 是用于js應用的狀態管理庫&#xff0c;通常和React一起用。幫助開發者管理應用中各個組件之間的狀態&#xff0c;使得狀態的變化變得更加可預測和易于調試。 Redu也可以不和React組合使用。&#xff08;通常一起使用&#xff09; Redux 三大原則 單一數據源…

武漢星起航:無錫跨境電商加速“出海”,物流升級助品牌全球布局

隨著全球化的不斷深入&#xff0c;跨境電商作為數字外貿的新業態&#xff0c;正逐漸成為無錫企業拓展海外市場的重要渠道。武漢星起航關注到&#xff0c;近年來&#xff0c;無錫市通過積極推進國際物流樞紐建設&#xff0c;完善海外倉布局&#xff0c;以及各特色產業帶的積極參…