這是我第一次使用SQL,我以爲我做的都對,但我一直收到我的表不存在的錯誤。要創建我做表:寫入SQLite數據庫時出錯
CREATE TABLE "Users" ("UserID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "UserName" VARCHAR, "Password" VARCHAR)
所以我有一個表命名爲用戶
要寫入表我打電話這樣的:
- (void) addUser {
if(addStmt == nil) {
const char *sql = "insert into Users(UserName, Password) values (?, ?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(addStmt, 1, [userName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [password UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
//SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
userID = sqlite3_last_insert_rowid(database);
//Reset the add statement.
sqlite3_reset(addStmt);
}
當我觸發此,它關閉該應用程序,並給我的錯誤 Error while creating add statement. 'no such table: Users'
花了我的時間去了這麼遠,我不知道從哪裏拿它從這裏。我能做些什麼來解決這個問題?
編輯: 這是我如何導入我的數據庫在我的AppDelegate文件
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"UserDatabase.sqlite"];
}
聽起來像這樣會工作。打開其他文件時,我幾次遇到這個問題。如果我把SQL文件放在服務器上,我會以同樣的方式執行嗎?或者我將不得不涉及FTP? – Chris 2011-05-10 22:02:22