1. 程式人生 > >IOS 資料儲存之 FMDB 詳解

IOS 資料儲存之 FMDB 詳解

//  ViewController.m
//  JRFMDB
//
//  Created by jerehedu on 15/6/18.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#import "ViewController.h"
#import "FMDatabase.h"

@interface ViewController ()
@property (nonatomic, strong) FMDatabase *db;

@end

@implementation ViewController

- (void
)viewDidLoad { [super viewDidLoad]; //匯入sqlite框架,匯入FMDB資料夾 //1.獲得資料庫檔案的路徑 NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *fileName=[doc stringByAppendingPathComponent:@"student.sqlite"]; NSLog(@"fileName = %@
",fileName); //2.獲得資料庫 FMDatabase *db = [FMDatabase databaseWithPath:fileName]; //3.開啟資料庫 if ([db open]) { NSLog(@"ok"); //4.創表 BOOL result=[db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);
"]; if (result) { NSLog(@"創表成功"); }else{ NSLog(@"創表失敗"); } } self.db=db; //插入資料 [self insertStu]; [self deleteStu:6]; [self updateStu:@"apple7_name" :@"7777"]; [self queryStu]; [self dropStu]; [self insertStu]; [self queryStu]; //6.關閉資料庫 [self.db close]; } #pragma mark 插入資料 -(void)insertStu { for (int i=0; i<10; i++) { NSString *name = [NSString stringWithFormat:@"1apple%i_name",i]; int age = arc4random()%3+20; //1. executeUpdate : 不確定的引數用?來佔位 (後面引數必須都是oc物件) [self.db executeUpdate:@"INSERT INTO t_student (name, age) VALUES (?,?);",name,@(age)]; //2. executeUpdateWithFormat : 不確定的引數用%@、%d等來佔位 (引數為原始資料型別) // [self.db executeUpdateWithFormat:@"insert into t_student (name, age) values (%@, %i);",name,age]; //3. 陣列 // [self.db executeUpdate:@"INSERT INTO t_student (name, age) VALUES (?,?);" withArgumentsInArray:@[name,@(age)]]; } } #pragma mark 刪除資料 -(void)deleteStu:(int)idNum { //a. executeUpdate : 不確定的引數用?來佔位 (後面引數必須都是oc物件) // [self.db executeUpdate:@"delete from t_student where id=?;",@(idNum)]; //b. executeUpdateWithFormat : 不確定的引數用%@、%d等來佔位 // [self.db executeUpdateWithFormat:@"delete from t_student where name=%@;",@"apple9_name"]; } #pragma mark 銷燬表格 -(void)dropStu { [self.db executeUpdate:@"drop table if exists t_student;"]; //4.創表 BOOL result=[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"]; if (result) { NSLog(@"再次創表成功"); }else{ NSLog(@"再次創表失敗"); } } #pragma mark 修改資料 -(void)updateStu:(NSString *)oldName :(NSString*)newName { // [self.db executeUpdateWithFormat:@"update t_student set name=%@ where name=%@;",newName,oldName]; [self.db executeUpdate:@"update t_student set name=? where name=?",newName,oldName]; } #pragma mark 查詢資料 -(void)queryStu { //1.執行查詢語句 // FMResultSet *resultSet = [self.db executeQuery:@"select * from t_student;"]; FMResultSet *resultSet = [self.db executeQuery:@"select * from t_student where id<?;",@(14)]; //2.遍歷結果集合 while ([resultSet next]) { int idNum = [resultSet intForColumn:@"id"]; NSString *name = [resultSet objectForColumnName:@"name"]; int age = [resultSet intForColumn:@"age"]; NSLog(@"id=%i ,name=%@, age=%i",idNum,name,age); } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end

相關推薦

IOS 資料儲存 FMDB

// ViewController.m // JRFMDB // // Created by jerehedu on 15/6/18. // Copyright (c) 2015年 jerehedu. All rights reserved. // #import "ViewCon

IOS 資料儲存 SQLite

// ViewController.m // JRSQLite查詢3 // // Created by jerehedu on 15/6/16. // Copyright (c) 2015年 jerehedu. All rights reserved. // #import "Vi

IOS 資料儲存 Core Data

  Core Date是ios3.0後引入的資料持久化解決方案,它是是蘋果官方推薦使用的,不需要藉助第三方框架。Core Date實際上是對SQLite的封裝,提供了更高階的持久化方式。在對資料庫操作時,不需要使用sql語句,也就意味著即使不懂sql語句,也可以操作資料庫中的資料。   在各類應用開發中使用

[三]基礎資料型別Integer

Integer 基本資料型別int  的包裝類 Integer 型別的物件包含一個 int 型別的欄位 屬性簡介 值為 2^31-1 的常量,它表示 int 型別能夠表示的最大值 @Native public static final int

[八]基礎資料型別Double

將此物件與指定物件比較 當且僅當引數不是 null 而是 Double 物件,且表示的 Double 值與此物件表示的 double 值相同時,結果為 true 為此,當且僅當將方法 doubleToLongBits(double) 應用於兩個值所返回的 lon

[七]基礎資料型別Float

將此物件與指定物件進行比較 當且僅當引數不是 null 而是 Float 物件,且表示的 float 值與此物件表示的 float 值相同時,結果為 true 為此,當且僅當將方法 #floatToLongBits(double) 應用於兩個值所返回的 int 值相

第一行程式碼——第六章:資料儲存全方案——持久化技術

目錄: 6.1 持久化技術簡介 6.2 檔案儲存 6.2.1 將資料儲存到檔案中 6.2.2 從檔案中讀出資料 6.3 SharedPreferences 儲存 6.3.1 將資料儲存到SharedPreferences中 6.3.2 從SharedPreferenc

第二行程式碼學習筆記——第六章:資料儲存全方案——持久化技術

本章要點 任何一個應用程式,總是不停的和資料打交道。 瞬時資料:指儲存在記憶體當中,有可能因為程式關閉或其他原因導致記憶體被回收而丟失的資料。 資料持久化技術,為了解決關鍵性資料的丟失。 6.1 持久化技術簡介 資料持久化技術:指那些記憶體中的瞬時

資料儲存全方案--持久化技術

持久化技術提供了一種機制可以讓資料在瞬時狀態和持久化狀態之間進行轉換。 Android中的資料持久化技術主要有: 1. 檔案儲存 2. SharedPreference 儲存 3. 資料庫儲存 1 檔案儲存 不會對儲存內容進行任何格式化處理

資料結構陣列

陣列(Array)是由相同型別的元素(element)集合組成的固定長度(Size)的一種資料結構。在記憶體中是連續儲存的,因此可以通過索引(Index)計算出某個元素的地址。 下面介紹都是已java為示例。對於沒有詳細瞭解過的  相信有所收穫。   基礎知識 宣告 type arrayN

最全iOS資料儲存方法介紹:FMDB,SQLite3 ,Core Data,Plist,Preference偏好設定,NSKeyedArchiver歸檔,Realm

專案準備運用的Core Data進行本地資料儲存,本來打算只寫一下Core Data的,不過既然說到了資料儲存,乾脆來個資料儲存基礎大總結! 本文將對以下幾個模組進行敘述。 沙盒 Plist Preference偏好設定 NSKeyedArchiver

資料hdfs三:put許可權剖析與常用命令

–無論是對於hdfs的讀和寫,對於使用者來說都是無感知的、透明的操作,使用者並不關心資料如何讀出來如何寫進去的,只要返回一個結果告訴使用者資料讀出來了或寫進去了,至於怎麼讀怎麼寫,使用者並不關心 補充: 讀:hdfs dfs -ls / = hdfs dfs

空間資料視覺化ArcLayer

deck-overlay中 首先使用d3中的scaleQuantile將資料進行分類,scaleQuantile方法是d3中的一種資料分類方法(https://www.cnblogs.com/kidsitcn/p/7182274.html)https://raw.githubusercontent.co

學機器學習,不會資料分析怎麼行?NumPy

你可以通過ndarray的astype方法明確地將一個數組從一個dtype轉換成另一個dtype: NumPy計算   這裡將介紹Numpy的一些基本計算 1.條件運算    2.統計運算   求最大值      求最小值      平均值   方差

IOS開發Block

從Mac OS X 10.6以及iOS4開始,蘋果在GCC和Clang編譯器中為C語言引入了一個新擴充套件:Blocks,使得程式設計師可以在C、Objective-C、C++和Objective-C中使用閉包。Blocks有點像函式,但是它可以在其它函式或方法中進行宣告和定義,同時它還是匿名的(匿名函式)

iOS總結-UIView總結(一)方法

參考https://blog.csdn.net/zeng_zhiming/article/details/73469182 首先要回顧UIView繼承於UIResponder,UIResponder繼承NSObject 畫素轉換      主l

資料探勘十大演算法Apriori

在2006年12月召開的 IEEE 資料探勘國際會議上(ICDM, International Conference on Data Mining),與會的各位專家選出了當時的十大資料探勘演算法( top 10 data mining algorithms ),

資料結構排序系列九 桶排序

基本思想:假定輸入是由一個隨機過程產生的[0, M)區間上均勻分佈的實數。將區間[0, M)劃分為n個大小相等的子區間(桶),將n個輸入元素分配到這些桶中,對桶中元素進行排序,然後依次連線桶輸入0 ≤A[1..n] <M輔助陣列B[0..n-1]是一指標陣列,指向桶(

MySQL(九)資料表的查詢(SELECT語法)二

上一篇講了比較簡單的單表查詢以及MySQL的組函式,這一篇給大家分享一點比較難得知識了,關於多表查詢,子查詢,左連線,外連線等等。希望大家能都得到幫助! 在開始之前因為要多表查詢,所以搭建好環境:   1)建立資料表suppliers   前面已經有一張表是book表,我們

iOS UIButtonUIEdgeInsets

級別:★★☆☆☆ 標籤:「UIButton內偏移量」「titleEdgeInsets」「imageEdgeInsets」 作者: MrLiuQ 審校: QiShare團隊 我們先看一下蘋果官方對UIEdgeInsets說明: typedef struct UIEdgeInset