tutorial mac sqlite static sqlite3 transient

mac - sqlite website



Cuándo usar SQLITE_TRANSIENT vs SQLITE_STATIC? (1)

Me gustaría crear / actualizar columnas de texto en sqlite3. Cuando recupero filas después de la creación / actualización, el texto es ''?''. Sin embargo, los valores enteros se conservan correctamente.

Mis declaraciones de texto se ven así:

const char *sql = "INSERT INTO todo(title, description, priority, status, created, expires, posx, posy, updated)" " VALUES(''?'', ''?'', ''?'', ''?'', ''?'', ''?'', ''?'', ''?'', ''?'');"; if (sqlite3_prepare_v2(database, sql, -1, &insert_statment, NULL) != SQLITE_OK) ... sqlite3_bind_text(update_statment, 5, [[dt stringFromDate:self.updated] UTF8String], -1, SQLITE_TRANSIENT);

Intenté SQLITE_TRANSIENT así como SQLITE_STATIC. Ambos casos parecen arrojar los mismos resultados (''?''). También he verificado que los valores de texto son válidos cuando se pasan a las sentencias sql apropiadas aquí.

¿Algunas ideas?


Eliminar los ''personajes alrededor? en tu cadena sql.

SQLITE_TRANSIENT le dice a SQLite que copie su cadena. Úselo cuando su cadena (''buffer'') vaya a desaparecer antes de que se ejecute la consulta.

SQLITE_STATIC le dice a SQLite que promete que el puntero que pase a la cadena será válido hasta después de que se ejecute la consulta. Use esto cuando su búfer esté, por ejemplo, estático, o al menos tenga un alcance dinámico que exceda el del enlace.