Android sqlite 使用框架

来源:http://www.cnblogs.com/ruanjiahui/archive/2017/06/15/7020123.html
-Advertisement-
Play Games

Android資料庫存儲 前言: 今天無聊就試試水,寫寫博客,在之前andorid使用數據儲存好像大概有5種方式,其中輕量級的是sqlite資料庫,但是sqlite使用起來好像有麻煩,首先要判斷...之後創建資料庫...創建表...之後就插入數據 那代碼都是一塊塊的,使用起來好麻煩,所有就對資料庫操 ...


Android資料庫存儲

前言:

今天無聊就試試水,寫寫博客,在之前andorid使用數據儲存好像大概有5種方式,其中輕量級的是sqlite資料庫,但是sqlite使用起來好像有麻煩,首先要判斷...之後創建資料庫...創建表...之後就插入數據 那代碼都是一塊塊的,使用起來好麻煩,所有就對資料庫操作進行少少優化

代碼介紹

github:https://github.com/Ruanjiahui/KotlinDatabase

android studio : compile 'ruan.database.com:mydatabase:1.1'

優點:

  • 調用方便
  • 減少用戶邏輯處理
  • 代碼量少

框架設計:


原生使用資料庫需要以下步驟
比如:

  • 創建SQLiteOpenHelper 之後在類創建資料庫,創建表等等,這樣子的靈活性比較麻煩
  • 創建SQLiteDatabase 之後操作資料庫
  • ContentValues是唯一插入資料庫的數據類型 如果你使用對象就必須將Object轉成ContentValues
  • 資料庫的數據提取返回cursor,之後手動的將cursor將數據取出來把數據封裝成Object之後再使用
    .
    .
    .
    所有原生使用本地資料庫是非常麻煩的事情,所以使用sqlite的時候是非常吃力的

所以才有現在這個框架的出現
SQLiteOpenHelper 和SQLiteDatabase 不需要開發者去創建和操作,之後插入資料庫的時候不在是ContentValues這個數據類型了,可以直接將Object將數據插入資料庫,不需要開發者手動將數據進行類型轉換,其實底層實現的方式還是Object將轉成ContentValues但是不需要開發者去手動轉換而以,實現的方式就是好好利用java的原生反射機制,將Object裡面的數據進行自動轉換成ContentValues,這個樣子不但可以節約開發時間,可以變得更自動化。
從資料庫裡面獲取數據也是不需要手動轉,直接將cursor數據自動封裝成Object,原理其實也是利用java強大的反射機制,完成這個操作。開發者就可以直接一句命令代碼就可以實現從資料庫裡面增刪查改
這個框架也還是實現就是自動判斷創建資料庫和數據表的操作,首先每次啟動app的時候都要檢查資料庫的檢查是否存在,自動判斷,如果沒有該表則自動創建表,這個邏輯方式就不需要開發者去通過代碼實現,讓這個框架幫你實現

說了這麼多應該就可以上代碼解釋了╮(╯▽╰)╭


java


public class Test implements DatabaseCallback{

    public Test(Context context){
        CheckDatabase.Companion.CheckData(context , "資料庫名稱" , "資料庫表" , this);
    }

    @NotNull
    @Override
    public Object CreateTable(@NotNull String database, @NotNull String table, boolean state) {
        //通過state判斷這個表是不是存在  true存在false不存在
        if (state)
            return null;
        else{
            //這個是創建表的時候  傳入表的結構
            Establish establish = new Establish();
            establish.put("id" , "int");
            establish.put("name" , "varchar(50)");
            return establish;
        }
    }
}

上面的代碼片段是自動檢測資料庫和資料庫表是否存在,之後通過表的結構自動創建表不用手動的判斷表
這個框架是用Kotlin寫的,因為google官方將Kotlin列入android官方語言,所以提前運用一下O(∩_∩)O哈哈~下麵的代碼使用Kotlin語言實現功能和上面的一樣

Kotlin

class Test (var context: Context) : DatabaseCallback{
    
    override fun CreateTable(database: String, table: String, state: Boolean): Any {
        if (state)
            return null!!
        else{
            val establish : Establish = Establish()
            establish.put("id" , "int")
            establish.put("name" , "varchar(50)")
            return establish
        }
    }

    init {
        CheckDatabase.CheckData(context , "資料庫名稱" , "資料庫表" , this)
    }
    
}

創建完資料庫的表,這個時候剩下的就是資料庫的增刪查改

Java

new BaseUser(context).INSERT("資料庫名稱" , "資料庫表" , object)
new BaseUser(context).DELETE("資料庫名稱" , "資料庫表")
new BaseUser(context).QUERY("資料庫名稱" , "資料庫表" , class)
new BaseUser(context).UPDATE("資料庫名稱" , "資料庫表" , object)

上面4句話就是資料庫的增刪查改就這麼簡單不需要其他的操作

CheckData

Kotlin

BaseUser(context).INSERT("資料庫名稱" , "資料庫表" , object)
BaseUser(context).DELETE("資料庫名稱" , "資料庫表")
BaseUser(context).QUERY("資料庫名稱" , "資料庫表" , class)
BaseUser(context).UPDATE("資料庫名稱" , "資料庫表" , object)

這個是我個人封裝的一個資料庫的小框架裡面

CheckDatabase這個類是實現檢測資料庫和表是否存在的類
BaseUser是資料庫操作的類

總結

本文主要介紹這個框架的使用,實現增刪查改和資料庫的一些操作,以便開發更好使用操作資料庫


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /* 這裡要說明一下 因為本人比較懶 博客中相關文章的內容更多的是對一書中代碼的整理和簡單註解方便自己日後複習和參考, 對相關內容感興趣的初學的朋友建議請先閱讀原文。此處的內容只能當成一種學習的補充和參考。謝謝! 因原書中領域模型+數據映射器的示例代碼是連貫在一起的 所以這裡就整理在一起了。 簡單介... ...
  • jdk1.7.0_79 對於線程池大部分人可能會用,也知道為什麼用。無非就是任務需要非同步執行,再者就是線程需要統一管理起來。對於從線程池中獲取線程,大部分人可能只知道,我現在需要一個線程來執行一個任務,那我就把任務丟到線程池裡,線程池裡有空閑的線程就執行,沒有空閑的線程就等待。實際上對於線程池的執行 ...
  • 段落 非常自然,一行文字就是一個段落。 比如 這是一個段落。 會被解釋成 這是一個段落。 如果你需要另起一段,請在兩個段落之間隔一個空行。 這是一個段落。 這是另一個段落。 會解釋成 這是一個段落 這是另一個段落 不隔一個空行的換行行為,在一些編輯器中被解釋為換行,即插入一個標簽。對與另外一些編輯器 ...
  • 面試時,面試官如果想考查你機算機網路學得怎麼樣,怎麼說也得問下TCP三次握手的過程吧? so, 我4月24號就開始複習電腦網路,斷斷續續複習了3天吧。 ISP: Internet Service Provider 網際網路服務提供商 Eg: 中國電信、中國聯通和中國移動 路由器是一種專用電腦。路由 ...
  • xml文件讀取到資料庫 第一步,導包 c3p0,dom4j,jaxen,MySQL-connector 第二步 xml文件,config文件 第三步 javabean 第四步 c3p0的工具類 第五步 讀取xml文件 SAXReader中的xpath的方式 首先需要map集合添加別名,遍歷讀取到的文 ...
  • java.util.concurrent.locks 介面 Condition Condition 將 Object 監視器方法(wait、notify 和 notifyAll)分解成截然不同的對象,以便通過將這些對象與任意 Lock 實現組合使用,為每個對象提供多個等待 set(wait-set) ...
  • 最近學習Java面向對象方面的知識點,一直沒時間更新博客,因為這塊的知識點真的蠻繞的。一個知識點一個知識點的往外冒,而且對於我這個初學者來說區分構造器和方法就花費了一整天的時間。現在準備再重新過一遍知識點。 先背下來一個理念: 面向對象程式設計是將數據放在第一位的,然後再考慮操作數據的方法。 之前, ...
  • 前 言 OOP 學習了好久的PHP,今天來總結一下PHP中的抽象類與抽象方法/靜態屬性和靜態方法/PHP中的單利模式(單態模式)/串列化與反串列化(序列化與反序列化)。 1、什麼是抽象方法? 沒有方法體 {} 的方法,必須使用abstract 關鍵字修飾。這樣的方,我們叫做抽象方法。 abstrac ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...