• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • iOS——SQLite數據庫操作

    iOS——SQLite數據庫操作

    首先介紹一下SQLite數據庫以及為什么要用ta:

    SQLite是一款輕型的嵌入式數據庫,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它的處理速度比Mysql、PostgreSQL這兩款著名的數據庫都還快。

    數據庫的存儲結構和excel很像,以表(table)為單位

    1. 新建數據庫文件
    2. 新建一張表(table)
    3. 添加多個字段(column,列,屬性)
    4. 添加多行記錄(row,每行存放多個字段對應的值)

    SQLite將數據劃分為以下幾種存儲類型:

    • integer : 整型值
    • real : 浮點值
    • text : 文本字符串
    • blob : 二進制數據(比如文件)

    iOS中SQLite的基本操作

    1.準備階段

    導入 libsqlite3.0.tbd
    ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20191119162803965.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDYzNTk4,size_16,color_FFFFFF,t_70
    引入頭文件 #import <sqlite3.h>

    2.打開(沒有則創建)數據庫

    	NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];
        NSString *path = [docPath stringByAppendingPathComponent:@"mySql.sqlite"];
        NSLog(@"%@",path);
        sqlite3 *mySql;
        if (sqlite3_open(path.UTF8String, &mySql) != SQLITE_OK) {
             // 打開數據庫失敗
            NSLog(@"打開數據庫失敗!");
        }else NSLog(@"打開數據庫成功!");
    

    3.創建表 TABLE

    	char *error = NULL;
        NSString *createTable = @"CREATE TABLE IF NOT EXISTS student (name TEXT, age INTEGER, icon BLOB)";
        if(sqlite3_exec(mySql, createTable.UTF8String, NULL, NULL, &error) == SQLITE_OK){
            NSLog(@"添加表成功!");
        }else NSLog(@"添加表失敗!");
    

    4.插入數據

    	//插入數據
        UIImage *image = [UIImage imageNamed:@"touxiang"];
        NSData *imageData = UIImagePNGRepresentation(image);
        NSLog(@"%@",imageData);
    
        NSString *insertData = @"insert into student(name, age, icon) values(?,?,?)";
        //預處理
        sqlite3_stmt *statement = NULL;
        if (sqlite3_prepare_v2(mySql, insertData.UTF8String, -1, &statement, NULL)==SQLITE_OK) {
            NSLog(@"預處理成功");
            //綁定數據
            sqlite3_bind_text(statement, 1, "Sunshuo", -1, NULL);
            sqlite3_bind_int(statement, 2, 20);
            sqlite3_bind_blob(statement, 3, imageData.bytes, (int)imageData.length, NULL);
            //將綁定的數據保存到數據庫中
            if (sqlite3_step(statement)==SQLITE_DONE) {
                NSLog(@"保存成功");
            }else NSLog(@"保存失敗");
        }else NSLog(@"預處理失敗");
        //釋放開辟的內存空間
        sqlite3_finalize(statement);
    

    5.查詢數據

    	//查詢數據
        sqlite3_stmt *stmt = NULL;
        NSString *selectData = @"select name, age from student";
        if (sqlite3_prepare_v2(mySql, selectData.UTF8String, -1, &stmt, NULL)==SQLITE_OK) {
            NSLog(@"查詢預處理成功");
            while (sqlite3_step(stmt)==SQLITE_ROW) {
                NSString *name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 0)];
                NSLog(@"name:%@",name);
                
                int age = sqlite3_column_int(stmt, 1);
                NSLog(@"age:%d",age);
            }
        }else NSLog(@"查詢預處理失敗");
        sqlite3_finalize(stmt);
    

    6.刪除數據

    語句:NSString *sql = @"DELETE FROM student WHERE name = ?";
    與查詢所有數據步驟一致,先預處理,后執行,沒有綁定

    7.修改數據

    修改符合條件的記錄

    NSString *sql = @"UPDATE student SET sign = ? WHERE age = ?"
    

    字段名后面必須是 = ?,后面再把字段的值綁定過去,而不是直接把值寫到 sqlite 語句中。

    版權聲明:本文為qq_39463598原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_39463598/article/details/103144876

    智能推薦

    Python 操作sqlite數據庫

    sqlite簡介 sqlite是一種輕量級的數據庫,它最大的特點就是無需安裝。數據庫本身以一個單獨的文件的形式存放。 sqlite只有5種數據類型: NULL 值是一個 NULL 值。 INTEGER 值是一個帶符號的整數,根據值的大小存儲在 1、2、3、4、6 或 8 字節中。 REAL 值是一個浮點值,存儲為 8 字節的 IEEE 浮點數字。 TEXT 值是一個文本字符串,使用數據庫編碼(UT...

    Qt下Sqlite數據庫操作

     Sqlite數據庫作為Qt項目開發中經常使用的一個輕量級的數據庫,可以說是兼容性相對比較好的數據庫之一(Sqlite就像Qt的親兒子,如同微軟兼容Access數據庫一樣)。關于Sqlite和Qt的千絲萬縷的故事,有機會再說(各位看官查一查也可以自己search一下)。這里簡單說說Sqlite數據庫的用法吧。 一、sql語句和部分接口函數 1、在.pro文件中記得增加 : 2、sqlit...

    QT操作sqlite數據庫匯總

    QT自帶的QSqlite數據庫中實現id主鍵自增長 QSqlite是QT自帶的輕量級數據庫,使用起來非常方便,對系統環境也沒有任何的環境要求,可移植性非常好,適合數據量不是太大,要求不是太高的程序。本文中,就介紹一點,怎么實現在QSqlite中的數據表實現id自增長,方法很簡單。 一、創建數據表時,主鍵設置為id,并且數據類型設置為integer。設置成integer的主鍵,默認自增長。 crea...

    Android操作SQLite數據庫

    文章背景 程序猿或是程序媛們在開發Android項目的時候,難免需要在客戶端數據本地持久化,那么Android中數據本地存儲有四種,分別是SharedPreferences、文件存儲、SQLite存儲數據、ContentProvider存儲數據。其中SQLite它以表的形式存放數據,這種使用表的結構、對于程序員意味著不僅方便存儲各類復雜而且龐大的數據,而且還方便管理數據。 其實Android手機里...

    Python操作SQLite數據庫

    SQLite是一款輕型的數據庫,占用內存非常低,通常只需要幾百K的內存就夠用了。它將整個數據庫,包括定義表、索引以及數據本身,做為一個單獨的可跨平臺的文件存儲在主機中,并且支持 Python、Java、C# 等多種語言,目前的版本已經發展到了 SQLite3。 Python中內置了SQLite模塊,不需要任何配置,可以直接導入使用,下面簡單介紹下在Python中操作SQLite數據庫。 操作SQL...

    猜你喜歡

    python ——操作sqlite 數據庫

    活動地址:CSDN21天學習挑戰賽 目錄 一,什么是sqlite數據庫 1.1 sqlite數據庫的功能特性 2,python操作sqlite 2.1 python sqlite3 模塊 2.2 創建或打開數據庫 2.3 數據庫連接對象 2.3 使用游標查詢數據庫 2.4 實操 1,建表  2,插入數據   3,查詢  &nbs...

    python SQLite數據庫基本操作

    python SQLite數據庫基本操作 1. 創建數據庫 導入sqlite模塊 創建數據庫連接:connect(“數據庫名稱”) 如果connect()內的數據庫名稱存在,則與此數據庫建立連接,返回connect連接對象; 如果connect()內的數據庫名稱不存在,則新建數據庫,再建立連接,返回connect對象。 關閉數據庫連接close() 2. 創建數據庫表 2....

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡