0

iPhoneで使用するSQLiteは初めてです。私はグーグルを使用し、iPhone用のSQLiteに関するいくつかの情報を入手しました。ここからサンプルのソースコードをダウンロードしました。以下のようなテーブルを作成するためのコードを追加しました。

database = [FMDatabase databaseWithPath:path];
[database open];
[database executeUpdate:@"create table test(name text, message text)"];

そして、私は以下のコードを使用してテーブルに値を挿入しました:

    NSString *nameStr = nameText.text;
    NSString *messageStr = ageText.text;

    NSString *executeQuery = [NSString stringWithFormat:@"insert into test values ('%@', '%@')",nameStr, messageStr];
    NSLog(@"Execute Query : %@", executeQuery);
    //[database executeUpdate:executeQuery];

    [database executeUpdate:@"insert into test(name, message) values(?,?)", nameStr,messageStr,nil];

しかし、アプリがクラッシュしている[database executeUpdate:@"insert into test(name, message) values(?,?)", nameStr,messageStr,nil];ので、このクラッシュの正確な理由を知ることはできません。

iPhoneでFMDatabaseを使用している場合は安全であり、iPhoneアプリに適していますか?誰かがこれらの問題について助けてくれますか?前もって感謝します。

4

2 に答える 2

1

FMDBを使用する正しい方法、およびstringWithFormatの使用に関するドキュメントがあります: https ://github.com/ccgus/fmdb (「SHOULDNOT do this」を検索してください)。

代わりに、次のようなことをしたいと思います。

database = [FMDatabase databaseWithPath:path];
[database open]; // FIXME check the return value
[database executeUpdate:@"create table test(name text, message text)"];  // FIXME check for an error
// since we're only performing a single update, there's no need for a transaction
[executeUpdate:@"INSERT INTO test (name, message) VALUES (?, ?)", @"Yuva", @"Hi there"];

-gus(FMDBを書いた人)

于 2012-06-29T18:28:46.060 に答える
0

このコードを使用する

database = [FMDatabase databaseWithPath:path];
[database open];
[database executeUpdate:@"create table test(name text, message text)"];
[database beginTransaction];

NSString *executeQuery = [NSString stringWithFormat:@"INSERT INTO test (name, message) VALUES (\"%@\", \"%@\")",@"Yuva", @"Hi there",nil];
NSLog(@"Execute Query : %@", executeQuery);
[database executeUpdate:executeQuery];
[database commit];
于 2012-06-29T10:57:46.353 に答える