我正在Xcode中開發iPhone應用程序,我無法訪問我創建的數據庫。以下是我在哪裏創建我的數據庫Sqlite3數據庫未執行查詢
//create local database
NSString *docsDir;
NSArray *dirPaths;
sqlite3 *localDB;
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"local.db"]];
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == NO) {
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &localDB) == SQLITE_OK) {
char *errMsg;
const char *sql_stmt1 = "CREATE TABLE IF NOT EXISTS My_choices (perfume_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, na TEXT, got_it TEXT)";
const char *sql_stmt2 = "CREATE TABLE IF NOT EXISTS Ratings (perfume_id INTEGER PRIMARY KEY AUTOINCREMENT, rating NUMERIC)";
const char *sql_stmt3 = "CREATE TABLE IF NOT EXISTS Consultant_Details (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT,website TEXT,domain TEXT,domain_no NUMERIC,phone TEXT,facebook TEXT)";
if (sqlite3_exec(localDB, sql_stmt1, NULL, NULL, &errMsg) != SQLITE_OK) {
NSLog(@"%@",@"Failed to create table My_choices");
}
if (sqlite3_exec(localDB, sql_stmt2, NULL, NULL, &errMsg) != SQLITE_OK) {
NSLog(@"%@",@"Failed to create table ratings");
}
if (sqlite3_exec(localDB, sql_stmt3, NULL, NULL, &errMsg) != SQLITE_OK) {
NSLog(@"%@",@"Failed to create table Consultant_Details");
}
sqlite3_close(localDB);
}
else {
NSLog(@"%@",@"Failed to open/create database");
}
}
下面添加的代碼是在哪裏我試圖訪問它
NSString *docsDir;
NSArray *dirPaths;
sqlite3 *localDB;
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
// Build the path to the database file
NSString *dbPath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"local.db"]];
NSString *q = @"select * from Ratings where perfume_id in";
q = [q stringByAppendingString:idList];
NSLog(@"%@",q);
const char *sqlStatement2 = [q UTF8String];
sqlite3_stmt *compiledStatement2;
if(sqlite3_open([dbPath UTF8String], &localDB) == SQLITE_OK) {
if(sqlite3_prepare_v2(localDB, sqlStatement2, -1, &compiledStatement2, NULL) == SQLITE_OK) {
NSLog(@"%d", SQLITE_ROW);
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement2) == SQLITE_ROW) {
// Read the data from the result row
int r = sqlite3_column_int(compiledStatement2, 1);
int id = sqlite3_column_int(compiledStatement2, 0);
NSLog(@"%d", id);
for (ListItem *item in self.listItemArray) {
if(item.perfumeId == id){
item.rating = r;
}
}
}
}
else{
NSLog(@"query failed: %s", sqlite3_errmsg(localDB));
}
}
sqlite3_close(localDB);
我總是得到的代碼「查詢失敗不存在頁表:評價」中我的日誌。 任何幫助將不勝感激。
什麼是「中」後,在您的查詢的表名...? –
如果([filemgr fileExistsAtPath:databasePath] == NO)在這裏放置斷點,並檢查這個條件是否爲真。 – karthikeyan
好吧我已經把這個休息和文件存在...所以這意味着表沒有創建!但我找不到爲什麼? – user1554693