iOS进阶(数据库之SQLite)
生活随笔
收集整理的這篇文章主要介紹了
iOS进阶(数据库之SQLite)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
//通過sqlite3創建一個數據庫指針,將已有數據庫的內容拷貝到沙盒中,對沙盒中的數據庫數據進行操作
?
?
1.SQLite語句
在已有的數據庫中創建表create table 表名稱(ID integer primary key, name text not null, sex text default “男”)往表中插入數據insert into 表名稱 (name, sex) values(“源源”, “男”) 字段可以無順序,但是值一定要保證對應,并且此時 完全可以不設置sex字段的值,因為我們在創建表時 已經把性別設置為default了。insert into 表名稱 values(11, “巴達”, “妖”) 必須保證設置的值與表中字段順序一樣修改表中某一條記錄的信息update 表名稱 set name = “hehe”, sex = “女” where ID = 1查詢語句select ID,name,sex from 表名稱 查詢的結果與你查詢的字段順序是一樣的。select * from 表名稱 查詢表中所有的字段信息,查詢的結果與你表中字段順序一樣select * from 表名稱 where ID = 1 后面可以跟條件查詢具體想要的信息select * from 表名稱 where ID > 1 and sex = “女” 可以跟多個條件,并且多個條件之間用and連接,此時查出來的是同up所有記錄。如果多個條件之間用or連接,那么查出來的結果只需要滿足其中一條就可以。select * from 表名稱 where name like “%源%” 只要名字中包含源,都可以查詢出來刪除記錄delete from 表名稱 where name = “源源”2.操作數據庫步驟
創建一個類來操作數據庫(注意要先導入libsqlite3.dylib)
static sqlite3 *db = nil;//打開數據庫 + (sqlite3 *)open{//此方法的主要作用是打開數據庫,準確的說是連接數據庫//方繪制是一個數據庫指針//因為 這個數據庫指針在很多的SQLite API(函數)中都會用到,我們聲明一個類的方法來獲取,更加方便if (db != nil) {return db;}//獲取documents文件NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//生成數據庫文件在沙盒中的位置NSString *sqlPath = [docPath stringByAppendingPathComponent:@"studb.sqlite"];//獲取文件管理對象NSFileManager *fileManager = [NSFileManager defaultManager];//判斷沙盒路徑中是否存在數據庫文件,如果不存咋才執行拷貝操作,如果存在不在執行拷貝操作if ([fileManager fileExistsAtPath:sqlPath] == NO) {//獲取數據庫文件在包中的文件NSString *filePath = [[NSBundle mainBundle] pathForResource:@"studb" ofType:@"sqlite"];//使用文件管理對象完成管理對象 [fileManager copyItemAtPath:filePath toPath:sqlPath error:nil];}// //創建一個數據庫指針 // sqlite3 *db = nil;//打開數據庫需要使用以下函數//第一個參數是數據庫路徑//第二個參數 是指向數據庫指針的指針sqlite3_open([sqlPath UTF8String], &db);return db; }//關閉數據庫 + (void)close{//關閉數據庫 sqlite3_close(db);//置空數據庫指針db = nil;}//打開數據庫--創建語句對象(保存了關聯的數據庫,執行的sql語句,sql語句的長度等信息)--逐行獲取數據,并將讀出來的C語言轉化為OC語言--將數據保存入模型存放在數組中--最后不要忘記釋放語句對象
//查找學生 + (Student *)findStudentByID:(int)ID{//打開數據庫sqlite3 *db = [DB open];sqlite3_stmt *stmt = nil;Student *student = nil;int result = sqlite3_prepare_v2(db, "select * from Students where ID = ?", -1, &stmt, nil);if (result == SQLITE_OK) {//如果查詢語句或者 其他sql語句 有條件,在準備語句對象的函數內部,sql中用?來代替條件,那么在語句執行之前一定要綁定sqlite3_bind_int(stmt, 1, ID);//第二個參數表示第幾個問號,問號的下標從1 開始if (sqlite3_step(stmt) == SQLITE_ROW) {//獲取記錄中的字段信息const unsigned char *cName = sqlite3_column_text(stmt, 1);const unsigned char *cGender = sqlite3_column_text(stmt, 2);//將C語言字符串轉換成OC字符串NSString *name = [NSString stringWithUTF8String:(const char *)cName];NSString *gender = [NSString stringWithUTF8String:(const char *)cGender];student = [Student studentWithID:ID name:name gender:gender];}}//先釋放語句對象 sqlite3_finalize(stmt);return student; }轉載于:https://www.cnblogs.com/w150385/p/5251651.html
總結
以上是生活随笔為你收集整理的iOS进阶(数据库之SQLite)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Easyui Tree 异步加载实例
- 下一篇: sed 命令小结