iOS——SQLite數據庫操作
iOS——SQLite數據庫操作
首先介紹一下SQLite數據庫以及為什么要用ta:
SQLite是一款輕型的嵌入式數據庫,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它的處理速度比Mysql、PostgreSQL這兩款著名的數據庫都還快。
數據庫的存儲結構和excel很像,以表(table)為單位
- 新建數據庫文件
- 新建一張表(table)
- 添加多個字段(column,列,屬性)
- 添加多行記錄(row,每行存放多個字段對應的值)
SQLite將數據劃分為以下幾種存儲類型:
- integer : 整型值
- real : 浮點值
- text : 文本字符串
- blob : 二進制數據(比如文件)
iOS中SQLite的基本操作
1.準備階段
導入 libsqlite3.0.tbd
引入頭文件 #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 語句中。
智能推薦
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....
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...