Настройка базы данных SQLITE3 как постоянного хранилища в приложении. Мне нужно проверить, существует ли объект базы данных, заполненный таблицами, и выполнить оператор SQL DDL, если таблицы не присутствуют (т. Е. При первом запуске APP), задаваясь вопросом, лучший ли подход к этому - это то, что у меня ниже или это совершенно неправильно /Есть ли способ лучше?! Могу ли я просто проверить свойство базы данных на то, что оно равно null/nil после int ri = sqlite3_open_v2 ("schoolDatabase.db", & _database, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); или вернет ли это значение, даже если в базе данных нет таблиц?Проверка наличия базы данных SQLite3
@interface DBAccess()
@property (nonatomic,strong) sqlite3 *database;
@implementation DBAccess
@synthesize database = _database
-(id)init
int check =sqlite3_initialise();
if(check==SQLITE_OK){
int ri = sqlite3_open_v2("schoolDatabase.db",&_database, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,NULL);
if(ri==SQLITE_OK){
NSLOG(@"Database created successfully};
else{ NSLog(@"problem creating database");}
sqlite3_stmt *statement;
const char *databaseExistence = "SELECT name FROM sqlite_master WHERE Type = table";
sqlite3_prepare_v2(self.database,databseExistence,-1,&statement,NULL);
while(sqlite3_step(statement)==SQLITE_ROW)
{
//I am presuming column indexes are zero based in sqlite3 ?
const unsigned char *tableNames = sqlite3_column_text(statement,2);
if(tableNames=nil){
NSLog(@"Tables in database do not exist......creating tables"
//insert SQL statement to prepare and execute CREATE TABLE commands for the Blank database
Ваш текущий запрос, вероятно, лучший способ. – Newyork167