1. 程式人生 > >【Android】SQLite資料庫基本用法詳解(極簡潔)

【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.常用十六進位制顏色對照表程式碼查詢:點選開啟連結

.

看完如果覺得不錯,留個贊再走。

.

相關推薦

AndroidSQLite資料庫基本用法簡潔

    Android操作SQLite資料庫(極簡潔,極易懂) 本篇原始碼地址: 原始碼裡面有詳細註釋,切記要修改一下gradle的版本號為本地gradle版本號,否則AndroidStduio會自行下載,浪費時間。 一、成品效果圖 Android

LinuxLinux中at命令 自動化執行

在windows系統中,windows提供了計劃任務這一功能,在控制面板 -> 效能與維護 -> 任務計劃, 它的功能就是安排自動執行的任務。 通過'新增任務計劃'的一步步引導,則可建立一個定時執行的任務。 在linux系統中你可能已經發現了為什麼系統常常會

AndroidSQLite資料庫的簡單使用

建立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

Unitysqlite資料庫在Unity中的使用

匯入 mono.data.sqlite.dll System.data.dll sqlite3.dll 到Assets/Plugins資料夾 【Windows電腦】mono.data.sqlite.dll和System.data.dll在Unity\Editor\Data\

OracleOracle資料庫基本指標檢視

目錄 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