1
votes

Flutter DataBaseException (la table category_Table n'a pas de colonne nommée category_id)

J'essaye d'insérer des données à partir d'un objet json, le code suivant est un bout de la table que j'ai utilisée

J'ai défini la classe d'assistance de base de données comme ceci:

Exception has occurred.
SqfliteDatabaseException (DatabaseException(table category_Table has no column named category_id (code 1): , while compiling: INSERT INTO category_Table (category_id, device_type_id, room_id) VALUES (?, ?, ?)) sql 'INSERT INTO category_Table (category_id, device_type_id, room_id) VALUES (?, ?, ?)' args [1, 1, 1]})

XXX

et voici la fonction d'insertion

        Database db = await this.database;
    var result = await db.insert(category_Table, category.toMap());
    print('category inserted');
        return result;


    }

voici l'erreur

await db.execute(
      'CREATE TABLE $category_Table($category_id INTEGER PRIMARY KEY UNIQUE  , $device_type_id INTEGER, '
                '$room_id INTEGER)');
        print('category created!');

merci pour toute aide :)


2 commentaires

Je suis désolé, ma réponse était incorrecte. quand appelez-vous le code sql de création de table, essayez peut-être de supprimer l'application de votre appareil / émulateur (afin de supprimer la base de données), puis de la réinstaller?


Je fais cela et change le Unique en AUTOINCREMENT mais il y a toujours une erreur de syntaxe pour le querry suivant `` `` wait db.execute ('CREATE TABLE $ roomTable ($ colRoomId INTEGER PRIMARY KEY AUTOINCREMENT, $ colRoomTitle TEXT,' '$ colRoomImage TEXT , $ colRoomDevNo INTEGER, $ colRoomDesc TEXT, $ colRoomCode INTEGER) '); `` `near". ": erreur de syntaxe


4 Réponses :


0
votes

les variables que j'ai utilisées pour la méthode toMAP n'étaient pas les mêmes que la classe d'assistance de base de données dans la dictée


0 commentaires

0
votes

1) Tout d'abord, vérifiez si le même texte variable que vous utilisez dans votre modèle, Map a le même nom que votre colonne

2) mettre à jour le numéro de version de la base de données

3) Désinstallez et réinstallez l'application sur votre téléphone ou votre émulateur.


0 commentaires

0
votes

Pour moi, l'erreur était due à une virgule et un espace manquants après la colonne précédente. Ce que j'avais:

db.execute(
  "CREATE TABLE $categoryTable("
    "$idColumn INTEGER PRIMARY KEY, "
    "$nameColumn TEXT, "
    "$weightColumn NUMERIC, "
    "$typeColumn NUMERIC, " // <- Fixed the error
    "$professorColumn TEXT, "
    "$colorColumn TEXT)"
);

Ce qui a été résolu pour moi était:

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

final String categoryTable = "categoryTable";
final String idColumn = "idColumn";
final String nameColumn = "nameColumn";
final String weightColumn = "weightColumn";
final String typeColumn = "typeColumn";
final String gradeColumn = "gradeColumn";
final String professorColumn = "professorColumn";
final String colorColumn = "colorColumn";

db.execute(
  "CREATE TABLE $categoryTable("
    "$idColumn INTEGER PRIMARY KEY, "
    "$nameColumn TEXT, "
    "$weightColumn NUMERIC, "
    "$typeColumn NUMERIC" // <- missing comma and space
    "$professorColumn TEXT, " // Error when I try to add something to this column
    "$colorColumn TEXT)"
);


0 commentaires

0
votes

Essayez de supprimer le stockage de l'application et de le réinstaller, car vous avez peut-être déjà créé le fichier de base de données sur votre téléphone d'une manière erronée ou ancienne ou même une colonne manquante. Un nouveau départ pourrait fonctionner si vous avez correctement utilisé SQFLite.


0 commentaires