0
私はiPhoneとiPadの両方に普遍的なアプリケーションを作っていますが、私はsqliteデータベースを置く必要がある特定の場所があるのだろうかと思っていましたか?一同に彼はそれを見つけられず、データベースを開くことができないという結果を与えることができないからです! = app not working:/ユニバーサルアプリケーションDBの質問
現在、私は自分のデータベースを "Other Sources"フォルダに持っています。
//Maakt een lijst van path strings voor de specifieke directories voor de specifieke domains.
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//Eerste object van paths wordt in de string gezet!
NSString *documentsDir = [documentPaths objectAtIndex:0];
//er wordt gezocht naar todo.sqlite in het opgegeven path!
NSString *databasePath = [documentsDir stringByAppendingPathComponent:@"todo.sqlite"];
pad = databasePath;
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
status = TRUE; //DEBUG PURPOSES ONLY!
const char *sql = "SELECT pk FROM todo";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
int primaryKey = sqlite3_column_int(statement, 0);
Taak *taak = [[Taak alloc] initWithPrimaryKey:primaryKey database:database];
[taken addObject:taak];
[taak release];
}
}
sqlite3_finalize(statement);
}else {
status = FALSE; //DEBUG PURPOSES ONLY!
sqlite3_close(database);
NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
}
これは私の接続コードです。多くのフォーラムやチュートリアルを検索してみんながそうしています!
データベースが本当にクロスプラットフォーム(Mac/iOSと「その他」の間)でない限り、コアデータを使用します。生のSQLは時間の無駄です。 – bbum
それでは、どういうエラーメッセージが表示されますか? – omz
コピーリソースのビルドフェーズに追加する必要があります。これはアプリのバンドルに配置されます。その後、ドキュメントフォルダにないことを検出するコードを追加し、それを開く前にそこにコピーする必要があります。 – ughoavgfhw