ios SQLite3使用

SQLite3使用:

insert data

sqlite3_open

sqlite3_stmt

sqlite3_prepare_v2

sqlite3_bind_text

sqlite3_step

sqlite3_finalize

sqlite3_close

query data

sqlite3_open

sqlite3_stmt初始化緩存區

sqlite3_prepare_v2執行查詢語句

sqlite3_step while循環逐步執行sqlite_step(stmt)如果stmt中還有未讀取的數據返回SQLITE_ROW如讀取完畢返回SQLITE_DON

sqlite3_column_datatype

sqlite3_finalize釋放緩沖區

sqlite3_close關閉數據庫

打開sqlite3_open參數1數據庫文件路徑參數2數據庫指針的地址如果數據庫不存在該方法會創建一個數據庫并打開

如果打開失敗關閉數據庫

斷言NSAssert(條件,….)如果條件為假crash崩潰并輸出字符串

斷言表達式不成立程序crash打印輸出

創建表

sql語句execute

sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg)

sqlite3_exec 參數1sqlite3 * 數據庫; ?參數2char *sql sql語句轉化的C字符串; 參數3*callbackC語言的回調方法; 參數4void *回調方法的第一個參數. 參數5**errmsg錯誤信息雙指針

存數據

打開數據庫sqlite3_open

創建sql語句

初始化句柄sqlite3_stmt *stmt = NULL

準備存數據sqlite3_prepare_v2把SQL語句編譯成字節碼留給后面的執行函數(不執行)

sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)

sqlite3_prepare_v2(db, [checkIsHaveSql UTF8String], -1, &stmt, nil)

db:數據庫句柄

zSql:語句

nByte:如果nByte小于0,則函數取出zSql從開始到第一0終止符的內容l如果nByte不是負的,那么它就是這個函數能從zSql中讀取的字節數的最大值。

pZtail:上面提到zSql在遇見終止符或者是達到設定的nByte之后結束,假如zSql還有剩余的內容,那y這些剩余的內容被存放到pZtail中,不包括終止符

ppStmt:能夠使用sqlite3_step()執行的編譯好的準備語句的句柄,如果錯誤發生,它被置為NULL,如假如輸入的文本不包括sql語句。調用過程必須負責在編譯好的sql語句完成使用后使用sqlite3_finalize()刪除stmt中的內容。

向stmt中綁定內容sqlite3_bind_datatype 1、句柄2、字段索引從1開始3、值4、值長度5、函數指針不需要傳null

執行stmt即編譯好的sql語句獲得結果的一行sqlite3_step返回SQLITE_DONE

釋放緩沖區sqlite3_finalize

關閉數據庫sqlite3_close

讀數據

打開數據庫sqlite3_open

創建sql語句

初始化緩存區sqlite3_stmt *stmt = NULL

準備執行查詢語句sqlite3_prepare_v2

while循環逐步執行sqlite_step(stmt)如果stmt中還有未讀取的數據返回SQLITE_ROW如讀取完畢返回SQLITE_DONE

取數據sqlite3_column_datatype索引從0開始

釋放緩沖區sqlite_finalize

關閉數據庫sqlite_close

SQLite語句四中數據類型:

Int 整型 ? ?text文本字符串real 浮點型bool 存放較大的二進制數據

1.創建表

CREAT TABLE 表名(字段1,字段2,字段3)

exp:CREAT TABLE Teacher (name text, age int, sex text);

2.插入一條數據

INSERT INTO 表名(字段1,字段2,字段3)VALUES (值1,值2,值3)

值要和字段一一對應 且不能少 為文本的字段時 加引號(單雙皆可)浮點型不用

3.查詢數據

SELECT 字段 FROM 表名

SELECT 字段,字段,字段 FROM 表名

SELECT * FROM 表名

WHERE語句用于有條件地從表中選取數據可將WHERE子句添加到SELECT語句

語法

在SELECT查詢語句后+WHERE字段名運算符值

SELECT*FROMStudentsWHEREname =? '張三';

數據庫提供內置函數:MAX(最大值), MIN(最小值), AVG(平均值)SUM(總值)

SELECT MAX(字段名) FROM表名

SELECT*FROMStudentsWHEREageBETWEEN10AND100

運算符有=,<>(不等于!=),>,<,>=,<=,BETWEEN(在某個范圍內前閉后閉),LIKE(搜索某種模式%可以代表任意一串字符_代表一個任意字符)

abcd

_b%

查詢有d的字符串%d%

SELECT*FROMAAAWHEREcolumn1LIKE'%d%'

查詢第二位有b的字符串_b%

SELECT*FROMAAAWHEREcolumn1LIKE'_b%'

引號:SQL使用單引號(也支持雙引號)來環繞文本值。如果是數值,則不要使用引號

4.修改數據

UPDATE表名稱SET列名稱=新值WHERE列名稱=某值(where后是一個條件)

UPDATE表名稱SET列名稱=新值,列名稱=新值WHERE列名稱=某值

5.刪除數據

DELETE用于刪除表中的行

語法:

DELETE FROM表名稱WHERE列名稱=值

DELETEFROMStudentsWHEREname = '小芳'

刪除所有行即在不刪除表的情況下刪除所有的行,表的結構、索引、字段都是完整的

DELETE FROM表名

DELETEFROMTeacher

6.約束

SQL約束用于限制加入表的數據的類型。可以在創建表時規定約束,或者表創建過后也可以,主要有以下幾種約束

NOT NULL約束強制列不接受空值空值無法插入新紀錄或更新紀錄

UNIQUE約束唯一標識數據庫表中的某個字段

PRIMARY KEY主鍵每個表中都應有且只能有一個主鍵主鍵列不能為NULL值

FOREIGN KEY外鍵關鍵表

DEFAULT給字段添加默認值

AUTOINCREMENT自動增長

7.查詢不重復的數據

SELECT DISTINCT列名稱FROM表名稱

SELECTDISTINCTnameFROMStudents

SELECTDISTINCT*FROMStudents

8.AND和OR

如果兩個條件都成立AND運算符返回一條數據

SELECT*FROMStudentsWHEREname='張三'ANDweight = '50'

只要一個條件成立OR運算符就返回一條數據

SELECT*FROMStudentsWHEREname='張三'ORweight = ’50'

9.OREDR BY

根據指定列對結果集進行排序默認按照升序對記錄進行排序降序使用關鍵字DESC升序ASC

的 ORDER BY子句是用來遞增或遞減的順序,根據一個或多個列中的數據進行排序。

SELECT字段名FROM表名稱ORDER BY字段名條件(DESC或ASC)

SELECT字段名,字段名FROM表名稱ORDER BY字段名條件,字段名條件(DESC或ASC)

SELECT*FROMStudentsORDERBYnameDESC, ageDESC

select ?*from?students order by name desc,age desc

select age,name??fromstudents?order by age desc,name desc

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容