es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter Base de datos SQLite imponiendo tipos de datos estrictos.

Tradicionalmente, SQLite permitía enviar cualquier tipo de dato a cualquier campo de una tabla de base de datos, por ejemplo, podías enviar un número entero a un campo de texto. Sin embargo, ahora se admiten oficialmente tipos de datos estrictos en la tabla desde la versión 3.37.0 de SQLite, por ejemplo, si creas una tabla estricta, no puedes enviar un número entero a un campo de texto.

El paquete de Flutter “sqflite” sigue arrojando un error al no reconocer el operando “STRICT”.

CREATE TABLE nombre_tabla(campo_uno INTEGER, campo_dos TEXT) STRICT;
Unhandled Exception: DatabaseException(near "STRICT": syntax error (code 1 SQLITE_ERROR)

¿Alguien ha podido aplicar tipos de datos estrictos al crear una tabla SQLite en Flutter usando el paquete “sqflite”?

EDICIÓN—

Parece ser que el paquete “sqflite” de Flutter utiliza la versión de SQLite que está preinstalada en el dispositivo Android/iOS. El paquete “sqflite” de Flutter no incluye ninguna biblioteca adicional de SQLite, por lo que el dispositivo está ejecutando una versión antigua de SQLite que no admite los tipos de datos estrictos.

@Pavel proporcionó un método para instalar la última versión de SQLite en el dispositivo Android/iOS. Al utilizar ese código como se muestra a continuación, efectivamente se instala la última versión de SQLite, sin embargo, aún no permite crear una tabla de base de datos estricta. Cuando ejecutas el código, se crea una tabla de base de datos con formato incorrecto y corrompida.

import 'package:sqflite_common/sqlite_api.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';

sqfliteFfiInit();

var db = await databaseFactoryFfi.openDatabase(inMemoryDatabasePath);

await db.execute('''
CREATE TABLE Product (
    field_one INTEGER,
    field_two TEXT
) STRICT
''');
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el paquete flutter sqflite no admite actualmente la imposición de tipos de datos estrictos al crear una tabla SQLite. Esto se debe a que el paquete utiliza la versión SQLite preinstalada en el dispositivo Android/iOS y no incluye ninguna biblioteca adicional de SQLite. Sin embargo, es posible instalar la última versión de SQLite en el dispositivo utilizando el paquete sqflite_common_ffi, como se muestra en el código proporcionado por @Pavel.

    Desafortunadamente, incluso con la última versión de SQLite instalada, al intentar crear una tabla estricta todavía se obtiene una tabla de base de datos mal formada y corrupta. Por lo tanto, en este momento no es posible utilizar tipos de datos estrictos al crear una tabla SQLite en Flutter utilizando el paquete sqflite.

Comments are closed.