首页 > 解决方案 > 如何修复 SQlite?

问题描述

我需要你的帮助。我必须从事一个颤振项目。为了保存我的数据,我使用了 sqlite,但它不起作用。我找不到我的错误。如果我运行该应用程序,我的提交按钮下方会出现一个加载圈。每次我点击这个按钮什么都没有发生。

我的错误是:

E/flutter(20462):错误代码:1(SQLITE_ERROR) E/flutter(20462):原因:SQL(查询)错误或缺少数据库。E/flutter (20462): (没有这样的表: kuelschmier (code 1): , while compile: INSERT INTO kuelschmier (inventanummer, konzentration, pHWert, nitrit, date, personalnummer) VALUES (?, ?, ?, ?, ?, ?))

我的数据库管理器:

import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

class DbKuelschmierManager {
  Database _database;

  Future openDb() async {
    if (_database == null) {
      _database = await openDatabase(
          join(await getDatabasesPath(), "ss.db"),
          version: 1, onCreate: (Database db, int version) async {
        await db.execute(
          "CREATE Analytics for Kühlschmiermittel (id INTEGER PRIMARY KEY autoincrement, inventanummer TEXT, konzentration TEXT, pHWert TEXT, nitrit TEXT, date TEXT, personalnummer TEXT)",

        );
      } );
    }
  }

  Future<int> insertKuelschmier(Kuelschmier kuelschmier) async {
    await openDb();
    return await _database.insert('kuelschmier', kuelschmier.toMap());
  }

  Future<List<Kuelschmier>> getKuelschmierList() async {
    await openDb();
    final List<Map<String, dynamic>> maps = await _database.query('kuelschmier');
    return List.generate(maps.length, (i) {
      return Kuelschmier(
          id: maps[i]['id'], inventanummer: maps[i]['inventanummer'], konzentration: maps[i]['konzentration'], pHWert: maps[i]['pHWert'], nitrit: maps[i]['nitrit'], date: maps[i]['date'], personalnummer: maps[i]['personalnummer']);
    });
  }

  Future<int> updateKuelschmier(Kuelschmier kuelschmier) async {
    await openDb();
    return await _database.update('kuelschmier', kuelschmier.toMap(),
        where: "id = ?", whereArgs: [kuelschmier.id]);
  }

  Future<void> deleteKuelschmier(int id) async {
    await openDb();
    await _database.delete(
        'kuelschmier',
        where: "id = ?", whereArgs: [id]
    );
  }
}

class Kuelschmier {
  int id;
  String inventanummer;
  String konzentration;
  String pHWert;
  String nitrit;
  String date;
  String personalnummer;
  Kuelschmier({@required this.inventanummer, @required this.konzentration, this.id,@required this.pHWert, @required this.nitrit, @required this.date, @required this.personalnummer});
  Map<String, dynamic> toMap() {
    return {'inventanummer': inventanummer, 'konzentration': konzentration, 'pHWert': pHWert, 'nitrit': nitrit, 'date': date, 'personalnummer': personalnummer};
  }
}

我的主要抽屉:

import 'package:flutter/material.dart';
import 'package:kuehlschmiermittel/screens/about_screen.dart';
import 'package:kuehlschmiermittel/screens/addentry_screen.dart';
import 'package:kuehlschmiermittel/screens/home_screen.dart';
import 'package:kuehlschmiermittel/screens/stats_screen.dart';

class MainDrawer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      // Add a ListView to the drawer. This ensures the user can scroll
      // through the options in the drawer if there isn't enough vertical
      // space to fit everything.
      child: ListView(
        // Important: Remove any padding from the ListView.
        padding: EdgeInsets.zero,
        children: <Widget>[
          DrawerHeader(
            child: Text('Kühlschmiermittel'),
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('assets/images/speedmaster.jpg'),
                fit: BoxFit.cover
              ),
              color: Colors.blue,
            ),
          ),
          ListTile(
            title: Text('Startseite'),
            leading: Icon(Icons.home),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => HomeScreen()),
              );
            },
          ),
          Divider(color: Colors.black38,),
          ListTile(
            title: Text('Eintrag hinzufügen'),
            leading: Icon(Icons.add),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => AddEntryScreen()),
              );
            },
          ),
          ListTile(
            title: Text('Statistiken'),
            leading: Icon(Icons.assessment),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => StatisticScreen()),
              );
            },

          ),
          Divider(color: Colors.black38,),
          ListTile(
            title: Text('Hilfe'),
            leading: Icon(Icons.help),
            onTap: () {
              // Update the state of the app.
              // ...
            },
          ),
          ListTile(
            title: Text('Über'),
            leading: Icon(Icons.info),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => AboutScreen()),
              );
            },
          ),
        ],
      ),
    );
    ;
  }
}

标签: sqliteflutter

解决方案


您不是在创建表格。

这是一个简单的例子:

CREATE TABLE contacts (
    contact_id INTEGER PRIMARY KEY,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE,
    phone TEXT NOT NULL UNIQUE
);

顺便说一句,您正在尝试创建表“Kühlschmiermittel 分析”,缺少 TABLE 关键字。您正在尝试查询表“kuelschmier”。

表的名称必须相同。


推荐阅读