ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍
簡介:
很早就想整理一下數據庫的使用了,剛好最近接觸較多,加之可以安排出空余的時間,所以瓜子我貢獻出自己喝咖啡的時間整理一下FMDB的使用,以下是對FMDB的介紹以及基本使用 --- insert、delete、update、select。其中select講了兩種比較重要的方式---ID查詢、模糊查詢。
在iOS中,主要有5種數據緩存的策略:
1、plist
2、歸檔
3、偏好設置
4、沙盒文件
5、"SQLite數據庫"
其中,"SQLite數據庫" 是最常用的數據緩存方式,在開發中,在無網絡的狀態下,數據庫常常發揮著非常大的作用!
系統提供的數據存儲方式的弊端 :
1)不方便操作大量的數據
- 系統提供的數據存儲方式都是覆蓋存儲的,新的數據會覆蓋舊的數據.而且當數據量非常大時,如果要添加新的數據,必須先把舊數據全部加載到內存中
2)不方便查找大量的數據
- 當數據量非常龐大時,要查詢其中某些數據,就非常困難。
而數據庫可以輕松解決以上弊端~
存儲方式:(類比于Excel表格)
"Excel" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "SQLite"
- 創建Excel文件 ? ? ? ? ? ? ? ? ? - 創建一個數據庫文件
- 創建表 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?- 創建表
- 確定表頭 ? ? ? ? ? ? ? ? ? ? ? ? ? ?- 創建數據庫的字段名(Excel表頭),并指定數據類型
- 對Excel表進行數據操作 ? ?- 對數據庫進行增刪改查
FMDB的使用流程:
簡單介紹:FMDB 是一個操作數據庫的第三方框架,并且支持多線程環境下的操作,也是需要手動導入'libsqlite3.0.tbd'庫,以OC的方式封裝了SQLite的C語言API。方便靈活并且線程安全。
"FMDatabase" : 單線程;"FMDatabaseQueue" : 多線程;"FMResultSet" : 查詢的結果集。
1、創建數據庫單例對象(一個數據庫可以存在多個表)
2、創建數據庫儲存路徑
3、創建表
4、對表格進行增刪改查等操作
上代碼:
1、創建數據庫單例對象,如圖1
圖 1
注意:創建單例的原因是保證數據庫隊列只創建一次,全局只有一個串行隊列,這樣操作數據更安全。
2、創建數據庫路徑和表格,如圖 2
圖 2
解析:單引號‘’中為表格的字段名,逗號后面為字段所屬類型,字段類型是整形就用interger,字符串就用text。
注意:主鍵要想實現自動增長,不能是text類型。
我們看到,在沙盒中已經建好了表名為:JLcharacterModel 的數據庫。如圖3
圖 3
3、進行數據庫操作 ---增刪改查
提示:建表,增刪改 操作都是方法 "[_db executeUpdate]"或者"[_db executeStatements]",查詢是另外的方法 "[_db executeQuery]" ?。星號(*)是選取所有列的快捷方式。SQL 語句對大小寫不敏感。SELECT 等效于 select。
1 ) INSERT INTO
INSERT INTO 語句用于向表格中插入新的行。
語法:INSERT INTO 表名稱 VALUES (值1, 值2,....)
也可以向指定的列插入數據:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
將數據寫入表格,如圖4(以下數據來源于卓浦士科技所屬的app ---足球技能分析大師TropsX的云端數據,因為安全問題,將部分信息遮擋,敬請諒解)
圖 4
注意!請注意:
1)列名稱和值名稱的順序要一一對應!例如:列名banner要對應自己的類型text。
2)如果列名類型是NSString,則需要加單引號 ‘’ 括住,例如:'%@',只應用于字符串類型。
3)對數據庫進行操作增刪改查之前要先打開數據庫,操作完畢要關閉數據庫。這只是一種嚴謹的寫法,最好這樣,否則可能會操作失敗。
打開app本地數據庫查看我們創建好的表格,如圖 5
圖 5
這時候你會發現,表格是空的!!!!!what ?
仔細一看,原來是創建表格的表名稱寫錯了!!把 CharaterModel 改為 JLCharaterModel ,so,數據庫路徑的表名稱跟插入數據寫的表名稱一定要相同!運行程序。鐺鐺鐺~
圖 6
注釋:圖 6 信息顯示不全。
2)DELETE
DELETE 語句用于刪除表中的行。
語法:DELETE FROM 表名稱 WHERE 列名稱 = 值,刪除所有行:DELETE FROM 表名 或者DELETE * FROM 表名。
現在我們刪除itemid為Shoe0101、Shoe0102這兩行~ 代碼如圖 7。
圖 7
來看看數據庫是否已經刪除成功,如圖8:鐺鐺鐺~
圖 8
已經刪除成功~
3)UPDATE
Update 語句用于修改表中的數據。
語法:更新某行的一列:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值。更新某行的若干列:UPDATE 表名稱 SET 列名稱1 = 新值1 ,列名稱2 = 新值2 WHERE 列名稱 = 某值。
將idNew為10000103的那一行 name改為靜林是真的瓜子,status改為U,看代碼:如圖 9。
圖 9
圖10 看看更新成功了沒有?
圖 10
到這里就非常完美了~~
4)SELECT
SELECT 語句用于從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。
語法:SELECT 列名稱 FROM 表名稱 或者 SELECT * FROM 表名稱。
再次提示:星號(*)是選取所有列的快捷方式。SQL 語句對大小寫不敏感。SELECT 等效于 select。
在講update的時候已經寫了一些select的語句了。通過條件查詢,圖 11看代碼~
圖 11
注意:獲取結果集列順序的時候,一定要取對類型,比如banner類型是字符串就要用stringForColumnIndex,整形就要使用intForColumnIndex,長整型就要使用longForColumnIndex,類型取不對,會導致返回的結果不對,切記!
查詢itemid為Shoe0103的結果,通過斷點,我們可以知道返回了一個帶有屬性的model,如圖12:
圖 12
通過關鍵字查詢結果,如圖13:
圖 13
我們查詢列名name有“瓜子”、expiredays == 90的結果,如圖14:
圖 14
可以看到得出一個結果~~
大坑注意:
1)模糊查詢時,需要自己拼接查詢語句,不要使用框架提供的
2)'%' 是特殊字符,此時需要使用%轉義.即 '%%'
3)自己拼接查詢語句時,就需要自己添加單引號把字符串引起來
錯誤的拼接和執行模糊查詢的方式:FMResultSet *resultSet = [_db executeQueryWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];
正確的拼接和執行模糊查詢的方式:NSString *selectSQL = [NSString stringWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];
FMResultSet *resultSet = [_db executeQuery:selectSQL];
到這里就寫完啦~希望對你有所幫助!不足之處敬請諒解并希望加以指正!QQ:1002282311 謝謝~~
總結
以上是生活随笔為你收集整理的ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java undo_用JAVA实现Und
- 下一篇: java arraylist 重复_Ja