我創建了我的表並使用firefox sqlite管理器擴展插入了我的數據,保存並添加了我的sqlitefile,它是「notifications.sqlite」,之後我編寫了此代碼,但它會輸出我沒有什麼。如何使用firefox插件創建.sqlite文件
打開.sqlite文件和.db文件有什麼不同嗎?我怎樣才能正常打開我的數據庫?
* UPDATE: *調試完畢後作爲朋友評論它在這條線的問題:
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"notifications.sqlite"]];
後
if ([filemgr fileExistsAtPath: databasePath ] == YES)
如果不是YES這樣就失去了一切,所以databasePath有點問題
我的表如下:
CREATE TABLE "quotes_type" ("type_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "content" VARCHAR)
,這裏是我的努力打開.sqlite文件:
- (void)viewDidLoad{
NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir = [dirPaths objectAtIndex:0];
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"notifications.sqlite"]];
sqlite3_stmt *statement;
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == YES)
{
if (sqlite3_open([databasePath UTF8String], &contactDB) == SQLITE_OK)
{
NSString *qrycount = [NSString stringWithFormat: @"select * from quotes_type"];
const char *count_stmt = [qrycount UTF8String];
sqlite3_prepare_v2(contactDB, count_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_ERROR) {
NSAssert1(0,@"Error when selecting rows %s",sqlite3_errmsg(contactDB));
} else {
NSLog(@"negin");
int myid=sqlite3_column_int(statement, 0);
NSString *text = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement,1)];
NSLog(@"myid is %d",myid);
NSLog(@"text is %@",text);
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
else NSLog(@"openning has problem");
}
}
你使用調試器來檢查哪些說法究竟失敗?爲什麼不使用'sqlite3_errmsg()'來報告錯誤信息而不是「打開有問題」? – 2013-04-07 14:36:51
我曾經使用它,它會去打開語句問題是在sqlite_open之後的某處,因爲我沒有任何nslog輸出 – Nickool 2013-04-07 14:40:23
我編輯了我的問題,但同時它似乎有人正在編輯我,我失去了我我appologize – Nickool 2013-04-07 14:44:38