【Android】SQLite資料庫基本用法詳解(極簡潔)
Android操作SQLite資料庫(極簡潔,極易懂)
本篇原始碼地址:
原始碼裡面有詳細註釋,切記要修改一下gradle的版本號為本地gradle版本號,否則AndroidStduio會自行下載,浪費時間。
一、成品效果圖
Android操作資料庫原理闡述
既然是要操作資料庫,那麼首先我們得選一款資料庫,因為這個世界上,現存資料庫種類很多。能隨口就說上來的有,比如:Oracle、MySQL、SQLSever、KingBase,這四個是我隨口就能說出來的,其他的像NoSQL、DB2......這些都是我得想一會才能說出來的,那麼Android選的這款資料庫,是我之前聽都沒聽說過的一款,SQLite。發音是:[sk'laɪt] ,塞克賴特。當然,不是說Android資料庫只能是SQLite,其它的也有辦法實現,只不過,AndroidSDK中自帶的是SQLite。
鋪墊到此為止,下面寫正文。
Android 提供的 SQLiteOpenHelper.java 是一個抽象類。那麼我們要使用它,必須自己寫一個類來繼承它,為了達到見名知意的目的習慣上,我們建立的都是DatabaseHelper.java或者簡寫DBHelper.java,這個無所謂,你建立成1234.java都行。
這一行規定死了,只能是這樣的:
public class DatabaseHelper extends SQLiteOpenHelper{
接下來需要寫一個帶全部引數的DatabaseHelper類的建構函式,以後生成資料庫物件的時候要用到:
//帶全部引數的建構函式,此建構函式必不可少
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
建構函式完事之後,寫繼承的抽象類SQLiteOpenHelper中的兩個抽象方法:
@Override public void onCreate(SQLiteDatabase db) { //建立資料庫sql語句 並 執行 String sql = "create table user(name varchar(20))"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
上面的程式碼有兩個問題,問題1.為什麼onUpgrade()方法是空的?答案:因為它是抽象方法,必須被繼承,但我為了達到極簡的目的又沒有用到它,一方面必須重寫,一方面沒有用到,所以就是一個空方法在這擺著樣子了。問題2.為什麼只重寫這兩個方法,其他的方法呢?答案:因為SQLiteOpenHelper.java中,只有這兩個方法是抽象方法,你不信?我給你看看原始碼。(在AndroidStudio中我們按住Ctrl同時滑鼠單擊SQLiteOpenHelper就能進入它的原始碼中,在原始碼介面按住Ctrl+F 就能調出搜尋框,輸入abstract,點擊向下箭頭↓ 查詢匹配項)
到此為止,我們自己建立的DatabaseHelper.java所有程式碼就已經寫完了。
接下來看MainActivity.java檔案中的程式碼,其中只有兩部分程式碼。
第一句程式碼中,建立Activity時會自動生成
public class MainActivity extends AppCompatActivity
在後面加上 下面這句,就能把onClick()方法寫到onCreate()方法之外了
implements OnClickListener
MainActivity.java中第一部分程式碼:
建立Activity時的程式碼即onCreate()方法,要我們自己寫的就兩件事:
1.根據Layout按鈕id生成Java按鈕物件
就像這樣:Button insert = (Button)findViewById(R.id.insert);
2.為所有Java按鈕物件設定監聽器
就像這樣:insert.setOnClickListener(this);
MainActivity.java中第二部分程式碼:
響應螢幕點選時的程式碼即onClick()方法,我們需要寫三件事:
1.生成EditText物件,用來獲取文字輸入框中使用者輸入的內容
就像這樣:EditText insert_edittext = (EditText)findViewById(R.id.insert_edittext);
2.建立資料庫,這裡我們給資料庫起名為“test_db”,資料庫版本號為1,程式碼如下:
//依靠DatabaseHelper帶全部引數的建構函式建立資料庫
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_db",null,1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
3.響應增、刪、改、查四個按鈕點選時觸發的操作
①增:插入資料,首先需要new一個ContentValues,內容值物件。
所謂的內容值,就是一個K,V 鍵值對,K指明欄位名稱即列名稱,V指明欄位值,即單元格內容。然後將這個鍵值對放到ContentValues的物件values裡面,再把攜帶著鍵值對的物件values插入user表中,程式碼如下:
//插入資料按鈕
case R.id.insert:
//建立存放資料的ContentValues物件
ContentValues values = new ContentValues();
values.put("name",insert_data);
//資料庫執行插入命令
db.insert("user", null, values);
break;
②刪:刪除資料,這裡不需要生成ContentValues物件,直接從表user中delete符合要求的內容即可,程式碼如下:
//刪除資料按鈕
case R.id.delete:
db.delete("user", "name=?", new String[]{delete_data});
break;
③改:更新資料,這裡和插入資料類似,需要new一個ContentValues物件,然後放入資料,執行update,程式碼如下:
//更新資料按鈕
case R.id.update:
ContentValues values2 = new ContentValues();
values2.put("name", update_after_data);
db.update("user", values2, "name = ?", new String[]{update_before_data});
break;
④查:查詢全部資料,這裡使用了Cursor遊標進行查詢,遊歷資料同時,把資料用換行符\n連線起來,再把所有資料展示到文字顯示框內,程式碼如下:
//查詢全部按鈕
case R.id.query:
//建立遊標物件
Cursor cursor = db.query("user", new String[]{"name"}, null, null, null, null, null);
//利用遊標遍歷所有資料物件
//為了顯示全部,把所有物件連線起來,放到TextView中
String textview_data = "";
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
textview_data = textview_data + "\n" + name;
}
textview.setText(textview_data);
break;
參考文章
1.Android開發-設定監聽器的四種方法:點選開啟連結
2.Android之SQLite資料庫的使用:點選開啟連結
3.常用十六進位制顏色對照表程式碼查詢:點選開啟連結
.
看完如果覺得不錯,留個贊再走。
.
相關推薦
【Android】SQLite資料庫基本用法詳解(極簡潔)
Android操作SQLite資料庫(極簡潔,極易懂) 本篇原始碼地址: 原始碼裡面有詳細註釋,切記要修改一下gradle的版本號為本地gradle版本號,否則AndroidStduio會自行下載,浪費時間。 一、成品效果圖 Android
【Linux】Linux中at命令詳解 (自動化執行)
在windows系統中,windows提供了計劃任務這一功能,在控制面板 -> 效能與維護 -> 任務計劃, 它的功能就是安排自動執行的任務。 通過'新增任務計劃'的一步步引導,則可建立一個定時執行的任務。 在linux系統中你可能已經發現了為什麼系統常常會
【Android】SQLite資料庫的簡單使用
建立WFDBHelper類,該類繼承於SQLiteOpenHelper類,改寫onCreate方法。 package com.liu_weifeng.wf; import android.content.Context; import android.database.Cursor; impo
linux中mariadb基本用法詳解(企業級)
資料庫 表的每一個列名字的頭 叫做欄位 是高階的exel表格軟體 資料庫種類 sqlserver sqllite db2 oracle > mysql 比較多 其中my
【Java入門提高篇】Day34 Java容器類詳解(十五)WeakHashMap詳解
public class WeakHashMapTest { public static void main(String[] args){ testWeakHashMap(); } private static void testWeakHashMap
PL/SQL DEVELOPER 基本用法詳解(轉)
PL/SQL DEVELOPER 基本用法詳解(建議寫過第一個儲存過程後的初手必讀) 用過oracle的都抱怨,為了穩定 它提供的圖形化操作 速度慢的讓人傷心呀,p4+128M的機器只要啟動一個 oracle服務就夠讓人傷心的,再在dba studio裡面操作真能讓人
【轉】SignalR新手系列教程詳解(六)- ASP.NET 應用整合 SignalR 瀏覽器聊天室示例
在上一篇教程我們講解了SignalR 平臺配置要求,下面根據一步步詳細示例搭建一個 SignalR 的示例專案,以此瞭解 SignalR 到底是一個什麼樣的效果。 SignalR 示例所使用的軟體版本 Visual Studio 2013,當然更高的版本也是支援的。
【轉】SignalR新手系列教程詳解(七)- SignalR 瀏覽器聊天室示例程式碼分析
SignalR 瀏覽器聊天室示例程式碼分析 在上一篇教程中的程式碼我們主要實現SignalR開發中的兩個基本任務:建立服務端的 hub 類作為伺服器的協調,然後就是使用 SignalR jQuery 庫來收發資訊。 SignalR Hubs 在前面的示例的Cha
資料庫三大正規化詳解(通俗易懂)
◆ 第一正規化(1NF): 強調的是列的原子性,即列不能夠再分成其他幾列。考慮這樣一個表:【聯絡人】(姓名,性別,電話)如果在實際場景中,一個聯絡人有家庭電話和公司電話,那麼這種表結構設計就沒有達到 1NF。要符合 1NF 我們只需把列(電話)拆分,即:【聯絡人】(
Android 中使用MediaRecorder進行錄影詳解(視訊錄製)
在這裡給出自己的一個測試DEMO,裡面註釋很詳細。簡單的視訊錄製功能. package com.demo; import java.io.IOException; import android.app.Activity; import android
tf.slice()函式詳解(極詳細)
[TOC] tf.slice()是TensorFlow庫中分割張量的一個函式,其定義為def slice(input_, begin, size, name=None):。tf.slice()函式的那些引數設定實在是不好理解,查了好多資料才理解,所以這邊記錄一下。 # 1.官方註釋 官方的註釋如下: ```p
Android學習筆記----SQLite資料庫基本用法
/*************************************************************************/ 資料庫 Android 為了讓我們能夠更加方
【轉載】Katalon Studio 基本用法--錄製指令碼並檢視測試報告
最近有在研究Katalon Studio,但是網上並沒有多少關於此軟體的教程,只能一邊翻譯官方文件一邊對照程式進行使用,所以想把這個工具的一些簡單使用分享一下。KS(katalon studio)是一個簡單但是功能強大的自動化測試工具。相信使用過selenium的人會很快上手,沒有使用過也很快上手,KS不需要
【Android】_自定義Adapter_學生註冊(無資料庫)
本文是完善前一篇學生註冊文章(https://blog.csdn.net/cungudafa/article/details/84780652)中:對`自定義ListView`增加`介面卡Adapter`實現對每個學生個體進行再編輯和刪除操作。
android:sqlite 資料庫的事務詳解
sqlite 資料庫的事務詳解,所有的解釋都在程式碼中進行了註釋 關於事務的應用主要都在MainActivity的onClickTransferAccountsSuccess和onClickTransferAccountsError方法中做的註釋,請執行體會 執行結果如下圖
【Hive】 cli 的基本用法
Hive can manage the addition of resources to a session where those resources need to be made available at query execution time. Any locally accessible fil
【Unity】sqlite資料庫在Unity中的使用
匯入 mono.data.sqlite.dll System.data.dll sqlite3.dll 到Assets/Plugins資料夾 【Windows電腦】mono.data.sqlite.dll和System.data.dll在Unity\Editor\Data\
【Oracle】Oracle資料庫基本指標檢視
目錄 1.查看錶空間 2.檢視使用者 3.檢視資料庫記憶體 4.檢視資料庫版本 5.oracle歸檔情況 6.檢視redo log日誌位置 7.檢視資料庫的控制
【轉載】Linux下chkconfig命令詳解
name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--
常見<meta>的基本用法詳解
代碼 簡介 clas 元素 word spa wid min mpat <meta charset="utf-8"> 定義與name 屬性相關的信息,使用 utf-8編碼方式編譯字符 <meta http-equiv="X-UA-Compatible" c