久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    SQLite

     myallmy 2019-09-30

    1.不需要一個單獨的服務器進程或操作的系統(無服務器的)。
    2.SQLite 不需要配置,這意味著不需要安裝或管理。
    3.一個完整的 SQLite 數據庫是存儲在一個單一的跨平臺的磁盤文件。
    4.SQLite 是非常小的,是輕量級的,完全配置時小于 400KiB,省略可選功能配置時小于250KiB。
    5.SQLite 是自給自足的,這意味著不需要任何外部的依賴。
    6.SQLite 事務是完全兼容 ACID 的,允許從多個進程或線程安全訪問。
    7.SQLite 支持 SQL92(SQL2)標準的大多數查詢語言的功能。
    8.SQLite 使用 ANSI-C 編寫的,并提供了簡單和易于使用的 API。
    9.SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。

    2.什么是SQLite

    SQLite是一個進程內的庫,實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎。它是一個零配置的數據庫,這意味著與其他數據庫一樣,您不需要在系統中配置。就像其他數據庫,SQLite 引擎不是一個獨立的進程,可以按應用程序需求進行靜態或動態連接。SQLite 直接訪問其存儲文件。

    3.如何創建數據庫和數據表

    1.SQLiteOpenHelper幫助類,借助這個類就可以非常簡單地對數據庫進行創建和升級。 SQLiteOpenHelper 是一個抽象類
    2.SQLiteOpenHelper 中有兩個抽象方法,分別是onCreate()和 onUpgrade(),我們必須在自己的幫助類里面重寫這兩個方法,然后分別在這兩個方法中去實現創建、升級數據庫的邏輯
    3.SQLiteOpenHelper中還有兩個非常重要的實例方法, getReadableDatabase()和getWritableDatabase()這兩個方法都可以創建或打開一個現有的數據庫(如果數據庫已存在則直接打開,否則創建一個新的數據庫),并返回一個可對數據庫進行讀寫操作的對象。不同的是,當數據庫不可寫入的時候(如磁盤空間已滿)getReadableDatabase()方法返回的對象將以只讀的方式去打開數據庫,而getWritableDatabase()方法則將出現異常。

    1、新建一個MySQLite繼承SQLiteOpenHelper

    public class MySQLite extends SQLiteOpenHelper {
        //數據庫的名字
        public static String DB_NAME="MySQLite.db";
    //  構造方法源碼
    //  public MySQLite(Context context, String name數據庫名,SQLiteDatabase.CursorFactory factory標的工廠, int version版本) {
    //        super(context, name, factory, version);
    //    }
        //已經在父類里面加入了數據庫名字,這里方法里可以省略 
        public MySQLite(Context context, int version) {
            super(context, DB_NAME, null, version);
            //創建數據庫
        }
    
        //數據庫第一次創建時被調用
        @Override
        public void onCreate(SQLiteDatabase db) {
            //創建表的代碼,添加id主鍵
            db.execSQL("create table 表名 (_id integer primary key autoincrement)");
    
        }
        //軟件版本號發生改變的時候調用
        @Override//舊版本oldVersion,新版本newVersion
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           //增加內容之后,比如添加了一個列或一個表之后,需要把版本號更新就會執行這個方法 
        }
    }

    2、調用構造方法創建數據庫實例

    MySQLite sqlhelper=new MySQLite(this, 1);

    3.SQLiteDatabase實現增、刪、改(更新)、查

    調用 SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()
    這兩個方法還都會返回一個SQLiteDatabase對象,借助這個對象就可以對數據進行 CRUD 操作了
    添加數據

    MySQLite sqlhelper=new MySQLite(this, 1);
        SQLiteDatabase sd = sqlhelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("列名",值)
        sd.insert(表名, null, values);

    *SQLiteDatabase 中提供了一個 insert()方法,添加數據。
    insert(String table, String nullColumnHack, ContentValues values)
    它接收三個參數,
    第一個參數是表名,我們希望向哪張表里添加數據,這里就傳入該表的名字。
    第二個參數用于在未指定添加數據的情況下給某些可為空的列自動賦值,不用直接傳入 null 即可。
    第三個參數是一個 ContentValues 對象,它提供了一系列的 put()方法重載,用于向 ContentValues 中添加數據,*
    刪除數據

    比如刪除id大于10的數據
    sd.delete(表名, "_id>?", new String[]{"10"});

    *SQLiteDatabase 中提供了一個 delete()方法,刪除數據
    delete(String table, String whereClause, String[] whereArgs)
    這個方法接收三個參數,
    第一個參數是表名,第二、第三個參數又是用于去約束刪除某一行或某幾行的數據,不指定的話默認就是刪除所有行*

    修改(更新)數據

    *SQLiteDatabase 中也 update()方法用于對數據進行更新 update(String table,ContentValues values, String whereClause, String[] whereArgs)
    將要更新的數據添加到ContentValues里,在通過約束修改更新數據*

    查詢數據

    *SQLiteDatabase 中提供了一個 query()方法用于對數據進行查詢
    query(String table,查詢的表名
    String[] columns,查詢的列名
    String selection, 指定 where 的約束條件
    String[] selectionArgs,為 where 中的占位符提供具體的值
    String groupBy, 指定需要 group by 的列
    String having,對 group by 后的結果進一步約束
    String orderBy)指定查詢結果的排序方式
    不需要的直接填null*

    直接使用SQL執行增刪改查

    MySQLite sqlhelper=new MySQLite(this, 1);
     SQLiteDatabase sd = sqlhelper.getWritableDatabase();
     //添加
     sd.execSQL("insert into 表名 values(?,?)",new String[]{"",""})
     //刪除
     sd.execSQL("delete from 表名 where _id=?",new String[]{""})
     //修改(更新)
     sd.execSQL("update 表名 set 列更改表達式? where 條件?,new String[]{"",""})
     //查詢
     sd.rawQuery("select 列名 from 表名", null); 
    

    *SQLiteDatabase下的execSQL( )方法和rawQuery( )方法
    execSQL(String sql, Object[] bindArgs)
    rawQuery(String sql,String[] selectionArgs)*

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 办公室强奷漂亮少妇视频| 亚洲最大成人在线播放| 国产精品中文第一字幕| 无码国模国产在线观看免费| 精品国产一区AV天美传媒| 福利一区二区在线视频| 换着玩人妻中文字幕| 中文 在线 日韩 亚洲 欧美| 日韩在线成年视频人网站观看| 内射口爆少妇麻豆| 丁香五月亚洲综合在线国内自拍 | 国产亚洲一区二区在线观看| 欧美大bbbb流白水| FC2免费人成在线视频| 国产第一页浮力影院入口| 高清不卡一区二区三区| 人妻中文字幕亚洲精品| 精品无码一区二区三区亚洲桃色| 亚洲国产精品午夜福利| 欧美亚洲日韩国产人成在线播放 | 无码国产69精品久久久久孕妇| 久久无码中文字幕免费影院| 国内极度色诱视频网站| 国产成人精品亚洲日本在线观看| 国产成人精品无码播放| 欧美日韩精品一区二区三区不卡| 国产精品午夜福利精品| 国产精品毛片无码| 久久精品无码鲁网中文电影 | 美女内射视频WWW网站午夜| 国产AV老师黑色丝袜美腿| 久久精品免视看国产成人| 国产高潮抽搐喷水高清| 免费看欧美全黄成人片| 亚洲AV中文无码字幕色最新 | 成 人色 网 站 欧美大片| 国产精品午夜福利合集| 成在线人午夜剧场免费无码 | 午夜无码大尺度福利视频| 国产成人精品亚洲日本在线观看 | 中文亚洲成A人片在线观看|