0

私はIOS開発が初めてなので、これに従っています

チュートリアル

このチュートリアルで説明したように、SQLITE コマンド ラインを使用してデータベースを作成し、テーブルを作成してから、データベースを XCode 4.6 プロジェクトにサポート ファイル フォルダーに追加してインポートしました。

テーブルにデータを入力したいだけなので、最初にデータベースを見つけてドキュメントフォルダーにコピーする関数があります (まだそこにない場合):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"Customers.db"];
FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];

writebleDBPath が Customers.db がある実際のパス (プロジェクトの Documents フォルダー内) を指しているため、これは正常に機能します。

次に、データベースを開いて新しいレコードを追加してみます。

[db open];
BOOL success =  [db executeUpdate:@"INSERT INTO customers (firstname,lastname) VALUES (?,?);",[patient.firstName UTF8String],[patient.secondName UTF8String], nil];

[db close];

ただし、成功値は常に「NO」です。

sqlite データベースの作成に使用するコードを含めます。

CREATE TABLE customers(id integer primary key, firstname varchar(30), lastname varchar(30))

私は何が欠けていますか?

4

2 に答える 2

1

が主キーの場合id、おそらくそれも設定する必要があります。

呼び出し[db lastErrorMessage]て、何が問題なのかを確認してください。

于 2013-03-11T23:55:19.783 に答える
0

チュートリアルのステップを省略しました:

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];

バンドルからデータベース ファイルをコピーします。これは、データベースとそのスキーマを作成し、それをアプリのパッケージに含めたことを前提としています。

于 2013-03-11T23:56:53.093 に答える