Creando un archivo de base de datos SQLite3 a través de Objective-C

Estoy intentando crear un archivo de base de datos SQLite3 a través de Objective-C en tiempo de ejecución. Estoy tratando de crear una tabla llamada "tblStore". Quiero que los nombres de los campos se llamen "strStoreNumber" y "strStoreReg". Soy nuevo en iOS y SQLite, así que me cuesta mucho encontrar la sintaxis para realizar esto. Además de crear la tabla, quiero que la tabla creada no resida en el paquete de la aplicación, sino que reside / se almacena en algún lugar del teléfono. La tabla debe ser legible / escribible. He leído un poco en "sandbox de usuario" y también en un "directorio de documentos". No estoy seguro de entender la diferencia entre los dos. Idealmente, mi aplicación usaría un botón para recibir información de los campos de texto. Después de que la entrada de los campos de texto se coloque en cadenas, se realizará una verificación para ver si mi tabla SQLite "tblStore" existe, y si no es así, se creará la tabla.

Para resumir: 1. ¿Cuál es la sintaxis de Obj-C / SQLite para crear una tabla llamada "tblStore" con los campos "strStoreNumber" y "strStoreReg"? 2. ¿Dónde debería residir el archivo db? Necesito leer y escribir en el archivo db tblStore. 3. ¿Cuál es la diferencia entre un "arenero de usuario" y un "directorio de documentos"?

Esto es lo que tengo actualmente:

<code>-(IBAction)setInput:(id)sender
{
    NSString *strStoreNumber;
    NSString *strRegNumber;
    NSString *tableName = @"tblStore";
    NSString *dbStrStore = @"strStore";
    NSString *dbStrReg = @"strReg";


    strStoreNumber = StoreNumber.text;
    strRegNumber = RegNumber.text;

    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* documentsDirectory = [paths lastObject];
    NSString* databasePath = [documentsDirectory stringByAppendingPathComponent:@"tblStore.sqlite"];
//  NSString* databasePath = [[NSBundle mainBundle] pathForResource:@"tblStore" ofType:@"sqlite"];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    {
        NSLog(@"Opened sqlite database at %@", databasePath);

        char *err; 
        NSString *sql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('%@' TEXT PRIMARY KEY, '%@' TEXT);", tableName, dbStrStore, dbStrReg];
        if (sqlite3_exec(database, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) 
        { 
            sqlite3_close(database);
            NSAssert(0, @"Table failed to create.");
        }
        //...stuff
    } 
    else 
    {
        NSLog(@"Failed to open database at %@ with error %s", databasePath, sqlite3_errmsg(database));
        sqlite3_close (database);
    }

    NSString *querystring;

    // create your statement
    querystring = [NSString stringWithFormat:@"SELECT strStore, strReg FROM tblStore WHERE strStore = %@ AND strReg = %@;", strStoreNumber, strRegNumber];  

    const char *sql = [querystring UTF8String];

    NSString *szStore = nil;
    NSString *szReg = nil;

    sqlite3_stmt *statement = nil;
    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL)!=SQLITE_OK) //queryString = Statement
    {
        NSLog(@"sql problem occured with: %s", sql);
        NSLog(@"%s", sqlite3_errmsg(database));
    }
    else
    {
        // you could handle multiple rows here
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {            
            szStore = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)];
            szReg = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
        }        
    }

    sqlite3_finalize(statement);

    lblStoreNumber.text = szStore;
    lblRegNumber.text = szReg;   
} 
</code>

Cuando ejecuto mi aplicación, obtengo los siguientes errores:

<code>2012-05-10 14:58:38.169 CCoDBTry[355:f803] Opened sqlite database at /Users/Matt****/Library/Application Support/iPhone Simulator/5.1/Applications/5DB7A218-A0F6-   485F-B366-91FD2F9BC062/Documents/tblStore.sqlite
2012-05-10 14:58:38.307 CCoDBTry[355:f803] sql problem occured with: SELECT strStore, strReg FROM tblStore WHERE strStore = 8053 AND strReg = 4;
2012-05-10 14:58:38.308 CCoDBTry[355:f803] no such column: strStore
</code>

Agradezco a cualquiera que se tome el tiempo de explicar algunas de estas cosas, ya que soy muy nuevo y no he logrado realizar algunas de las cosas que he intentado. ¡Muchísimas gracias por la ayuda!

Respuestas a la pregunta(6)

Su respuesta a la pregunta