По какой-то причине мое приложение, похоже, не создает базу данных в папке «Документы». Я слежу за этим видеоуроком (http://www.youtube.com/watch?v=bC3F8a4F_KE) (он также имеет исходный код (https://github.com/iffytheperfect1983/sqliteTutorial), который я загрузил, и он отлично работал на симуляторе).Приложение, не создающее базу данных sqlite
Я использовал несколько инструкций NSLog, чтобы попытаться определить проблему. Я понял, что, несмотря на то, что весь код с выражением «Объявленный» работал без проблем, остальные инструкции NSLog не отображались в консоли. Я неустанно смотрел туда и обратно между кодом, который я написал, и кодом в учебнике, но безрезультатно для решения.
Вот код.
@interface ViewController() {
NSMutableArray *letterArray;
sqlite3 *letterDB;
NSString *dbPathString;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Set up
letterArray = [[NSMutableArray alloc]init];
[[self letterList] setDelegate:self];
[[self letterList] setDataSource:self];
// create or open database
[self createOpenDB];
// Display database
[self displayDB];
}
// Create/open database
- (void) createOpenDB {
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
dbPathString = [docPath stringByAppendingPathComponent:@"letters.db"];
char *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:dbPathString]) {
const char *dbPath = [dbPathString UTF8String];
NSLog(@"Declared");
// create database here
if (sqlite3_open(dbPath, &lettersDB)==SQLITE_OK) {
NSLog(@"'If' statement is ok");
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS LETTERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, A TEXT, B TEXT, C TEXT, D TEXT, E TEXT, F TEXT, G TEXT)";
NSLog(@"Declared");
sqlite3_exec(lettersDB, sql_stmt, NULL, NULL, &error);
NSLog(@"Execution complete.");
sqlite3_close(lettersDB);
NSLog(@"Close complete.");
NSLog(@"Database creation successful.");
}
}
}
Как это решить? Заранее спасибо.
При запуске в такие проблемы, проверьте ошибки. Добавьте 'else' в оператор' if', используемый для открытия базы данных. Log 'sqlite_errmsg()'. – rmaddy
Спасибо. Я обязательно буду помнить об этом. – chrisjr