0

私はiOSのsqliteを初めて使用します。したがって、データベースのさまざまなテーブルにデータを保存するために、最初と次に何をする必要がありますか?

4

2 に答える 2

0

私はさまざまなアプリケーションでSqliteデータベースを使用しましたが、問題なく動作します。Sqliteデータベースのテーブルにデータを挿入するには、次の手順に従う必要があります...

1.まず、データベースを作成する必要があります...プロジェクトを作成して挿入し、リンクされたフレームワークlibsqlite3.0.dylibを追加して、これらをクラスにインポートしたことを願っています。2.挿入メソッドを置き換えてこのコードを記述します...

+(void)insertRecord:(NSString *)dbPath record:(NSMutableArray*)dataArray{
    @try{
        sqlite3_stmt *insertStmnt;
        if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK){

            for(int i=0; i<[dataArray count]; i++){
                id record=[dataArray objectAtIndex:i];
                NSString *insertQuery = [NSString stringWithFormat:@"INSERT INTO Table_Name (\"Column1\",\"Column2\",\"Column3\",\"Column4\",) VALUES('%@','%@','%@','%@')",[[record objectForKey:@"col1"]  stringByReplacingOccurrencesOfString:@"'" withString:@"''"],[[record objectForKey:@"col2"] stringByReplacingOccurrencesOfString:@"'" withString:@"''"],[[record objectForKey:@"col3"]  stringByReplacingOccurrencesOfString:@"'" withString:@"''"],[[record objectForKey:@"col4"]  stringByReplacingOccurrencesOfString:@"'" withString:@"''"]];

                const char *sql = [insertQuery cStringUsingEncoding:NSUTF8StringEncoding];

                if(sqlite3_prepare_v2(database, sql, -1, &insertStmnt, NULL) == SQLITE_OK){

                }else{

                }
                if(SQLITE_DONE != sqlite3_step(insertStmnt)){

                }


            }
        }
    }@catch (NSException *r) {
        NSLog(@"UU %@",r);
    } 
}

ここで、recordはディクショナリの配列であり、テーブルに挿入する値またはユーザーから取得する値が含まれています。stringByReplacingOccurrencesOfString:上記のメソッドが必要なのは、ユーザーが1つのコートでデータを入力すると、アプリケーションがクラッシュするためです(ユーザーからの入力を受け取らない場合は、これを削除できます)。

はい、これらのリンクをたどって理解を深めることもできます。1.http://www.techotopia.com/index.php/IOS_4_iPhone_Database_Implementation_using_SQLite2.SQLiteチュートリアル

それがあなたのために働くことを願っています、あなたが何か質問があればそれから答えるかもしれません。

于 2012-08-22T05:51:35.023 に答える
0

SQLiteを使用している場合は、FMDBを入手してください。これにより、作業が大幅に楽になります。上記のすべてのコードは、スレッドセーフな呼び出しに縮小することができます(頭のてっぺんから、おそらくコンパイルの準備ができていません)。

[queue inDatabase:^(FMDatabase *db) {
        [db executeUpdateWithFormat:@"INSERT OR REPLACE INTO table (f1,f2) VALUES (%@, %@);", field1, field2];

        DLog(@"insert error: %@", [db lastErrorMessage]);
    }];
于 2012-08-22T07:58:08.220 に答える