iPhone上のデータストレージ、sqlite 3---サードパーティフレームワークFMDB

3610 ワード

iPhoneではsqliteを用いてデータストレージを行うのが習慣的です.一般的に他のプラットフォームでもandroidなどのsqliteに慣れています.
iPhoneには、パッケージされたサードパーティ製のフレームワークがいくつかあり、より多くの時間を節約できます.例えば:Sqlitepersistentobjects,FMDB.今日はこの2つのフレームを探して、FMDBのスタイルがもっと私の使用に合っているような気がしますが、実は両者はそれぞれ長所があって、個人の好みを見ているだけです.
FMDatabaseとFMResultSet;
そのうちのFMResultSet android sqlite cursor 。FMDB github ,https://github.com/ccgus/fmdb。
補足:FMDBをインポートした後、iOSのsqlite 3 Framework、libsqlite 3.0.dylibをインポートすることを覚えておいてください.
1、まずFMDatabaseオブジェクトをインスタンス化しなければならない.これはSqlitepersistentobjectsと同じである. サブクラスを派生して操作するのは違います.次にデータベースを開きます(データベースが作成されていない場合)
[cpp]  view plain copy
//paths: iosの下のDocumentパス、Documentはiosの読み書き可能なフォルダです  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentDirectory = [paths objectAtIndex:0];  
//dbPath: データベースパス、Document.  
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"Test.db"];  
//データベースインスタンスの作成 db  ここで説明します.パスに「Test.db」のファイルが存在しない場合、sqliteは自動的に「Test.db」を作成します.  
FMDatabase *db= [FMDatabase databaseWithPath:dbPath] ;  
if (![db open]) {  
NSLog(@"Could not open db.");  
return ;  
}  
 
次に、このデータベース・オブジェクトを使用して操作できます.操作は主にupdateとqueriesです.
まず、テーブルの作成です.
[cpp]  view plain copy
//Userという名前のテーブルを作成します.stringタイプのName、integerタイプの2つのフィールドがあります. Age  
[db executeUpdate:@"CREATE TABLE User (Name text,Age integer)"];  
 
これで私たちは時計を持っています.次に、テーブルを操作します.データを挿入!注意挿入されたデータにはワイルドカードが使用されています.これは、iphoneがsqlite口実を直接使用するバインド変数と同じで、後ろのワイルドカードが一致するデータです.
 
[c-sharp]  view plain copy
//データ挿入OCのタイプを使用 text対応NSString integerはNSNumberの整形に対応  
[db executeUpdate:@"INSERT INTO User (Name,Age) VALUES (?,?)",@"女房",[NSNumber] numberWithInt:20]]  
次はデータの更新です.
 
[cpp]  view plain copy
//データの更新 「女房」を「ベイビー」に変更  
[db executeUpdate:@"UPDATE User SET Name = ? WHERE Name = ? ",@"妻",@"宝贝";  
次に、データを削除します.
[c-sharp]  view plain copy
//データの削除  
[db executeUpdate:@"DELETE FROM User WHERE Name = ?",@"女房  
 
updateの基本的な操作はこれだけで、次はqueriesです!
[c-sharp]  view plain copy
//データベースの最初の条件を満たした結果を返す  
NSString *aa=[db stringForQuery:@"SELECT Name FROM User WHERE Age = ?",@"20"];  
これでクエリーは1つのデータを返しますが、クエリーが複数のデータを返したい場合はどうすればいいですか?心配しないでください.前にFMDBのもう一つの主要なクラス、FMResultSetについて言及しました.これは結果セットです.複数のデータを返すとFMDBはこの結果セットにデータを置き、この結果セットをクエリー操作します!簡単です.
[c-sharp]  view plain copy
FMResultSet *rs=[db executeQuery:@"SELECT * FROM User"];  
rs=[db executeQuery:@"SELECT * FROM User WHERE Age = ?",@"20"];  
while ([rs next]){  
NSLog(@"%@ %@",[rs stringForColumn:@"Name"],[rs stringForColumn:@"Age"]);  
}  
 
より多くのFMSultSetメソッドは次のとおりです.
  • intForColumn:
  • longForColumn:
  • longLongIntForColumn:
  • boolForColumn:
  • doubleForColumn:
  • stringForColumn:
  • dateForColumn:
  • dataForColumn:
  • dataNoCopyForColumn:
  • UTF8StringForColumnIndex:
  • objectForColumn:

  • 具体的にクラスを見ればいい!よし、FMDBの使用はこのようにして、簡単ではないか.実はこのパッケージsqliteのフレームワークはすべて万変してその宗から離れず、sqlをマスターすればいいのだ.