精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS嵌入式數據庫SQLite3使用簡析

移動開發 iOS
SQLite,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月。 至今已經有12個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。

1. Sqlite3數據類型及存儲類

每個存放在sqlite數據庫中(或者由這個數據庫引擎操作)的值都有下面中的一個存儲類:

(1)NULL,值是NULL

(2)INTEGER,值是有符號整形,根據值的大小以1,2,3,4,6或8字節存放

(3)REAL,值是浮點型值,以8字節IEEE浮點數存放

(4)TEXT,值是文本字符串,使用數據庫編碼(UTF-8,UTF-16BE或者UTF-16LE)存放

(5)BLOB,只是一個數據塊,完全按照輸入存放(即沒有準換)

:①Sqlite沒有單獨的布爾存儲類型,它使用INTEGER作為存儲類 型,0為false,1為true

 ②Sqlite沒有另外為存儲日期和時間設定一個存儲類集,內置的sqlite日期和時間函數能夠將日期和時間以TEXT,REAL或INTEGER形式存放

TEXT 作為IS08601字符串("YYYY-MM-DD HH:MM:SS.SSS")
REAL 從格林威治時間11月24日,4174 B.C中午以來的天數
INTEGER 從 1970-01-01 00:00:00 UTC以來的秒數

2. Sqlite3函數功能簡介

1)基本函數及結構體

sqlite3        *pdb  //數據庫句柄,跟文件句柄FILE很類似
sqlite3_stmt  *stmt  //這個相當于ODBC的Command對象,用于保存編譯好的SQL語句
sqlite3_open()       //打開數據庫
sqlite3_exec()       //執行非查詢的sql語句
sqlite3_prepare()    //準備sql語句,執行select語句或者要使用parameter bind時 ,                             用這個函數(封裝了sqlite3_exec).
sqlite3_step()       //在調用sqlite3_prepare后,使用這個函數在記錄集中移動。
sqlite3_close()      //關閉數據庫文件

2)綁定函數

int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));

3)取值函數
sqlite3_column_text(), 取text類型的數據
sqlite3_column_blob(),取blob類型的數據
sqlite3_column_int(), 取int類型的數據

3. Sqlite3使用步驟

1) 首先獲取iPhone上Sqlite 3 的數據庫文件的地址
2) 打開Sqlite 3 的數據庫文件
3) 定義SQL文
4) 邦定執行SQL所需要的參數
5) 執行SQL文,并獲取結果
6) 釋放資源
7) 關閉Sqlite 3 數據庫。

4. Sqlite3數據操作

由于整個例子代碼比較繁瑣,這里只列出數據庫操作的部分代碼作為參考:

1.添加開發包libsqlite3.0.dylib

首先是設置項目文件,在項目中添加iPhone版的sqlite3的數據庫的開發包,在項目下的Frameworks點擊右鍵,然后選擇libsqlite3.0.dylib文件。

libsqlite3.0.dylib文件地址:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib/libsqlite3.0.dylib

2.獲取sqlite3的數據庫文件地址

  1. //數據庫路徑  
  2. -(NSString*)databasePath  
  3. NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  4. NSString *pathname = [path objectAtIndex:0];  
  5. return [pathname stringByAppendingPathComponent:@”database.sqlite3”];  
  6. }  

3.打開數據庫

  1. - (BOOL)openDatabase  
  2.   
  3. {  
  4.     if (sqlite3_open([[self databasePath] UTF8String],&database) != SQLITE_OK)  
  5.     {  
  6.         sqlite3_close(database);  
  7.         printf("failed to open the database");  
  8.         return NO; 
  9. else   
  10.     {  
  11.         printf("open the database successfully");  
  12.         return YES;  
  13.     } 

4.創建表

  1. //創建TimerTable表  
  2.   
  3. - (BOOL)createTimerTable  
  4. {  
  5.     if ([self openDatabase]==YES) 
  6.     {  
  7.         char *erroMsg;  
  8.         NSString *createSQL = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@(timerid INTEGER PRIMARY KEY AUTOINCREMENT,time INTEGER,remaintime INTEGER,iconuri BLOB,vibrate INTEGER,status INTEGER,message TEXT)",TableName];  
  9.         if (sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &erroMsg)!= SQLITE_OK) 
  10.         {  
  11.             sqlite3_close(database);  
  12.             printf("create table faild");  
  13.             return NO;  
  14.         }  
  15.         else  
  16.         {  
  17.             printf("table was created");  
  18.             return YES;  
  19.         } 
  20.     }  
  21.     else  
  22.         return NO; 
  23. }  

5.添加數據

  1. //添加Timer  
  2.   
  3. - (BOOL)insertTimer:(TimerInfo *)timerInfo  
  4. {    
  5.     bool isOpen=[self openDatabase];  
  6.     if (isOpen!=YES)  
  7. {  
  8.       return NO;  
  9.     }  
  10.     sqlite3_stmt *statement;  
  11.     static char *insertTimerSql="INSERT INTO TimerTable(time,remaintime,iconuri,vibrate,status,message,type) VALUES (?,?,?,?,?,?)";  
  12.     if (sqlite3_prepare_v2(database,insertTimerSql,-1,&statement,NULL)!= SQLITE_OK)  
  13.     {  
  14.         NSLog(@"Error:Failed to insert timer");  
  15.         return NO;  
  16.     }  
  17.     sqlite3_bind_int(statement,1,timerInfo.time);//timerInfo是一個封裝了相關屬性的實體類對象  
  18.     sqlite3_bind_int(statement,2,timerInfo.remainTime);  
  19.     sqlite3_bind_text(statement,3,[timerInfo.iconuri UTF8String],-1,SQLITE_TRANSIENT);  
  20.     sqlite3_bind_int(statement,4,timerInfo.vibrate);  
  21.     sqlite3_bind_int(statement,5,timerInfo.status);  
  22.     sqlite3_bind_text(statement,6,[timerInfo.message UTF8String],-1,SQLITE_TRANSIENT);  
  23.     int success=sqlite3_step(statement);  
  24.     sqlite3_finalize(statement);  
  25.     if(success==SQLITE_ERROR)  
  26.     {  
  27.         NSLog(@"Error:fail to insert into the database with message.");  
  28.         return NO;  
  29.     }  
  30.     NSLog(@"inserted one timer");  
  31.     return YES;  

6.查詢數據

  1. //查詢數據庫中所有的TimerInfo,返回一個包含所有TimerInfo的可變數組  
  2.   
  3. -(NSMutableArray *)getAllTimers  
  4. {  
  5.     NSMutableArray *arrayTimers=[[NSMutableArray alloc] init];  
  6.     NSString *queryStr=@"SELECT * FROM TimerTable";  
  7.     sqlite3_stmt *statement;  
  8.     if (sqlite3_prepare_v2(database, [queryStr UTF8String], -1, &statement, NULL)!=SQLITE_OK)  
  9.     {  
  10.         printf("Failed to get all timers!\n");    
  11.     }  
  12.     else  
  13.     {  
  14.         while (sqlite3_step(statement)==SQLITE_ROW)  
  15.         {  
  16.             TimerInfo *timerInfo=[[TimerInfo alloc] init]; 
  17.             timerInfo.timerId =sqlite3_column_int(statement,0); 
  18.             timerInfo.time =sqlite3_column_int(statement,1);  
  19.             timerInfo.remainTime=sqlite3_column_int(statement,2);  
  20.             timerInfo.vibrate =sqlite3_column_int(statement,4); 
  21.             timerInfo.status = sqlite3_column_int(statement,5);  
  22.             char *messageChar=sqlite3_column_text(statement,6); 
  23.             if (messageChar==NULL)  
  24.                 timerInfo.message=nil;  
  25.             else  
  26.                 timerInfo.message =[NSString stringWithUTF8String:messageChar];  
  27.             [arrayTimers addObject:timerInfo];  
  28.             [timerInfo release];  
  29.         }  
  30.     }  
  31.     sqlite3_finalize(statement);  
  32.     NSLog(@"arrayTimersCount: %i",[arrayTimers count]); 
  33.     return arrayTimers; 
  34. }  

此外,還有數據庫數據的更新及其刪除操作就不再依依列出,它們之間只是執行的SQL文不同,其他部分的代碼較為類似。

運行效果:(具體頁面控件及事件:略)

在這里只是做下小結,其中難免有說的不對的地方,所以希望大家多多給予指正。

責任編輯:閆佳明 來源: blog.51cto
相關推薦

2020-09-18 09:15:22

數據庫Sqlite3進階

2013-04-10 14:21:35

2013-09-02 14:41:05

Java嵌入式SQLite

2010-09-09 16:42:18

嵌入式IPv6協議棧

2020-09-17 09:40:20

數據庫Sqlite3命令

2011-03-07 09:57:24

Perst嵌入式數據庫

2012-03-06 12:59:11

iOS SQLite3iOSSQLite3

2011-07-07 16:42:38

iPhone Sqlite3 數據庫

2012-03-06 10:17:45

iOS SQLite3iOSSQLite3

2017-09-17 12:21:52

移植Linux系統sqlite3

2011-03-11 11:19:05

嵌入式數據庫

2011-06-02 10:24:48

Android SQLite

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2013-09-22 10:39:00

MeayunDB

2009-01-18 15:36:04

2011-07-08 10:45:19

SqlceSqlCeConnec

2013-05-03 13:42:20

iOS開發SQLite3存儲讀取

2020-07-31 08:07:54

Python開發數據庫

2010-03-23 09:08:05

2009-11-19 09:35:36

eXtremeDB嵌入式實時數據庫McObject
點贊
收藏

51CTO技術棧公眾號

国产极品美女高潮无套久久久| 日韩在线视频一区| www.九色.com| 五月激情婷婷网| 日韩成人免费看| 日韩资源在线观看| 色悠悠在线视频| 国产在线美女| 国产农村妇女毛片精品久久麻豆| 91情侣偷在线精品国产| 日产电影一区二区三区| 精品日本12videosex| 欧美人xxxx| 日韩国产一级片| 一广人看www在线观看免费视频| 国产sm精品调教视频网站| 欧美在线性爱视频| 欧美日韩综合一区二区| 国产真实有声精品录音| 精品欧美久久久| 视色视频在线观看| 九九热免费在线观看| 波多野结衣激情视频| 午夜欧美理论片| 亚洲一级片在线看| 97人妻精品一区二区三区免费| 日韩一区二区三区免费视频| 亚洲大片免费看| 少妇熟女一区二区| 电影av在线| av电影在线观看不卡| 成人欧美一区二区三区在线湿哒哒| 日韩精品视频免费看| 伊人久久大香线蕉综合四虎小说| 一道本一区二区三区| 激情五月婷婷网| 欧美精品人人做人人爱视频| 欧美福利视频导航| 欧美在线二区| 可以在线观看的av| 少妇性l交大片7724com| 国产成人福利视频| 亚洲精品日韩综合观看成人91| 九九热hot精品视频在线播放| 波多野结衣影片| 日本黄色播放器| 欧美国产日韩一二三区| 97蜜桃久久| 日韩在线一卡二卡| 亚洲精品一卡二卡三卡四卡| 日韩a∨精品日韩在线观看| 91麻豆成人精品国产免费网站| 亚洲一区二区成人| 久久影视一区| 在线免费观看日韩欧美| 色欲av无码一区二区人妻| 可以免费看av的网址| 国内精品一区二区| 精品精品国产高清a毛片牛牛 | 久久免费国产精品 | 亚洲免费在线视频一区 二区| 欧美二区在线播放| 日本高清不卡免费| 国产精品99一区二区三区| 亚洲日本成人网| av女人的天堂| 欧美色网址大全| 视频直播国产精品| 日本 欧美 国产| 羞羞色午夜精品一区二区三区| 久久精品视频一| 国内偷拍精品视频| 在线成人h网| 欧美在线xxx| 午夜视频网站在线观看| 老司机免费视频一区二区 | 欧美在线se| 3d动漫精品啪啪一区二区竹菊| 性鲍视频在线观看| 激情av综合| 精品视频在线一区| 亚洲第一成人av| 国产肥臀一区二区福利视频| 激情综合色综合久久| 国产资源在线观看| 男人网站在线观看| 免费国产在线精品一区二区三区| 亚洲人午夜精品| 亚洲大片免费看| 激情欧美一区| 男女污视频在线观看| 特级黄色片视频| 9a蜜桃久久久久久免费| 亚洲深夜福利在线| 国产盗摄一区二区三区| 超碰人人在线| 熟妇高潮精品一区二区三区| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品欧美极品| 精品国产乱码久久久久久果冻传媒 | 特级西西444www| 国产精品乱码| 精品调教chinesegay| 国产目拍亚洲精品99久久精品| 天天综合网网欲色| 欧美久久亚洲| 日韩在线观看一区二区三区| 日韩精品三区| 男女污视频在线观看| 中文字幕在线观看免费高清| 国模视频一区二区| 色悠悠亚洲一区二区| 男女性色大片免费观看一区二区| 视频一区在线免费看| 国产精品无码久久av| 菠萝菠萝蜜网站| 亚洲一区二区三区免费看| 日韩免费高清在线观看| 亚洲国产一区自拍| 亚洲精品日日夜夜| 99re热这里只有精品视频| 欧美日韩亚洲一区三区| 国产一区一区| 欧美色图天堂| 亚洲图片在线播放| 精品国产乱码久久久久久88av| 亚洲一区二区在线免费看| 日本视频一区二区| 成人在线视频中文字幕| 欧美亚洲日本精品| 欧美成人免费| 日韩免费视频网站| 在线黄色免费观看| 国产主播一区二区三区四区| 亚洲天堂影视av| 天天操天天干天天综合网| 国产成人精品www牛牛影视| 国产精品chinese在线观看| 国产精品论坛| 日韩一级片免费| 精品少妇久久久| 国产精品无码一区二区三区| 中文字幕在线乱| 国产精品久久久久免费a∨| 日韩视频一区在线观看| 中文字幕亚洲精品在线观看 | 色妞欧美日韩在线| 亚洲美女视频在线| 成人亚洲精品久久久久软件| 国产一区二区三区四区老人| 极品av在线| 99视频免费看| 亚洲网站免费观看| 中文字幕一区二区三区四区视频| av片免费观看| 国产成人免费看一级大黄| 国产又粗又黄视频| 国产黄色小视频在线观看| 色网站免费观看| 污污网站在线免费观看| 中文字幕有码在线观看| 高清视频在线观看三级| 1024在线看片你懂得| 国产精品—色呦呦| 国模私拍一区二区国模曼安| 亚洲天堂手机| 国产高清日韩| 国产精品巨作av| 国产成人一区| 女人香蕉久久**毛片精品| 欧美激情综合色综合啪啪| 网友自拍一区| a看欧美黄色女同性恋| 久久久久久久久久久9不雅视频| 久久99久国产精品黄毛片色诱| 欧美变态网站| 欧美特大特白屁股xxxx| 日本免费不卡视频| 免费观看黄一级视频| 色网站在线播放| 久草视频手机在线| 99久久久无码国产精品不卡| a一级免费视频| 亚洲激情图片网| 国产高清自拍视频| 熟女俱乐部一区二区| www.四虎精品| 人妻熟妇乱又伦精品视频| 色大师av一区二区三区| 91免费高清视频| 欧日韩不卡在线视频| 久久躁狠狠躁夜夜爽| 色偷偷av亚洲男人的天堂| 欧美高清www午色夜在线视频| 欧美午夜丰满在线18影院| 7777精品伊人久久久大香线蕉的 | 中文字幕欧美日本乱码一线二线| 国产综合自拍| 午夜精品在线| 三级成人黄色影院| 青青青青在线| 青青草原国产在线| 91麻豆精品在线| 韩国一区二区三区四区| 成人欧美一区二区三区黑人一| 在线观看亚洲一区二区| 在线黄色网页| 欧美精品一二| 国产激情视频一区二区三区欧美| 激情成人中文字幕| 久久av.com| 动漫一区二区在线| 九九九九免费视频| 中文在线观看免费视频| 男人插女人视频在线观看| 91视频免费入口| 中文乱码字幕高清一区二区| 在线观看国产精品视频| 视频免费一区| 精精国产xxxx视频在线播放| 欧美激情精品| 亚洲第一会所| 久久精品女人天堂av免费观看| 免费看久久久| 国产成人免费视频精品含羞草妖精| 国产精品中文字幕日韩精品| 青娱乐精品在线视频| 日韩成人一区二区三区在线观看| av不卡免费电影| 成人永久看片免费视频天堂| 欧美日本在线| 性xx色xx综合久久久xx| 日本成人在线视频网站| 丁香桃色午夜亚洲一区二区三区| 成人动漫av在线| 成人午夜精品在线| 成人激情免费电影网址| 中文字幕日韩一区| 一本色道久久综合亚洲91| 欧美日韩国产综合久久| 精品不卡在线视频| 精品国产3级a| 亚洲人午夜色婷婷| 欧美性在线视频| 成人午夜小视频| 日韩av一二三四区| 99视频日韩| 精品欧美一区二区在线观看视频| 香蕉视频xxxx| 国产农村妇女毛片精品久久| 欧美黄色a视频| 韩国毛片一区二区三区| 日韩视频一区二区三区在线播放 | 中文字幕在线视频区| www.神马久久| 狠狠色丁香婷婷综合久久片| 色婷婷av一区二区三区大白胸| 久久亚洲精品网站| 中文字幕日韩一区二区三区不卡| 亚洲v国产v欧美v久久久久久| 国产黄a三级三级三级| 欧美精品日日操| 国产精品www.| 悠悠色在线精品| 久久影视电视剧免费网站| 国产91露脸中文字幕在线| 国产免费一区二区三区四在线播放| 日韩精品电影一区二区| 国产人妖在线播放| 成人在线观看亚洲| 天堂综合网久久| 久久久久国内| 一区av在线播放| 一本久久综合亚洲鲁鲁| 1卡2卡3卡精品视频| 91福利免费观看| 激情综合丁香五月| 欧美熟女一区二区| 国产成年精品| 老司机一区二区三区| 97aⅴ精品视频一二三区| 色久优优欧美色久优优| 一区二区三区天堂av| 国产精品激情自拍| 黄色一级片黄色| 日本乱子伦xxxx| 欧洲成人一区二区三区| 国产成人影院| 精品国产一区二区三区噜噜噜| 午夜久久久久| 欧美日韩国产高清一区二区| 性刺激综合网| 做爰无遮挡三级| 欧美一性一交| 欧美伊人精品成人久久综合97| 国产日韩欧美一区二区三区四区| 欧美日韩在线观看成人| 极品尤物一区| 日韩欧美一区二区在线| 动漫一区二区在线| 91 在线视频| 三级在线观看视频| 国产成人精品午夜视频免费| 欧美精品一区二区精品网| 欧美日本韩国国产| 深夜福利影院在线观看| 亚洲天堂一区二区| 国产主播一区二区| 永久免费毛片在线播放不卡| a天堂资源在线观看| 中文字幕永久在线视频| 国产一区二区久久久久| 国产精品一区二区在线播放| 欧美高清第一页| 亚洲欧美日本一区二区三区| www欧美在线| 日本午夜精品久久久久| 免费成人在线影院| 日韩精品丝袜在线| 日韩久久在线| 国产亚洲精品久久久久久无几年桃| av资源在线播放| 成人av午夜电影| 4438x成人网最大色成网站| 91免费视频黄| 中文人妻av久久人妻18| 日日夜夜精品视频| 国产大片一区二区| 亚洲欧美日韩中文在线制服| 天堂一区二区三区| 伦av综合一区| 国产精品亲子伦av一区二区三区| 秋霞午夜av一区二区三区 | 久久日韩精品一区二区五区| 一本色道久久88综合日韩精品| 久久久久久久香蕉| 一级爱爱免费视频| 日韩精品免费视频一区二区三区| 国产 欧美在线| 日韩亚洲综合在线| 97超碰成人在线| 色猫av在线| 国产精品美女久久久| 亚洲免费电影一区| 黄色三级视频片| 丰满少妇一区二区三区| 日韩电影在线观看完整版| 国产一区二区女| 国产精品欧美日韩一区二区| 少妇高潮av久久久久久| 老司机精品久久| 国产成人极品视频| 中文字幕在线2018| 成人在线视频一区二区| 国产一区二区视频在线免费观看| 人妻夜夜爽天天爽| 2024国产精品| 欧美性大战久久久久| 一卡二卡在线视频| 日韩二区在线观看| 91成人性视频| 精品少妇theporn| 国产精品福利在线观看播放| 日韩电影第一页| aa片在线观看视频在线播放| 久久精品国产亚洲blacked| 日韩欧美在线影院| 欧美黑人经典片免费观看| 在线观看h网| 亚洲欧美综合另类在线卡通| 在线视频亚洲自拍| 天天射天天操天天干| 欧美aaa在线| 亚洲最大福利网| 免费福利在线观看| 国产69精品久久99不卡| 欧美精品国产精品日韩精品| 国产男男chinese网站| av男人的天堂在线观看| 91免费小视频| 91青草视频久久| 97超碰国产在线| 麻豆精品精品国产自在97香蕉| 久久免费高清视频| 国产亚洲精品熟女国产成人| 精品一区二区三区中文字幕| 狠狠色香婷婷久久亚洲精品| 久久久999视频| 亚洲一区二区av| 精品成人私密视频| 欧美一区二区三区影院| 国产精东传媒成人av电影| 精品日韩欧美一区二区| 日本中文字幕影院| 国产精品调教视频| 精品视频久久久久久久| 97在线观看免费视频| 四虎成人精品一区二区免费网站| 欧美色区777第一页| 色呦色呦色精品|