sqlite - 如何修复 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()),
);
},
),
],
),
);
;
}
}
解决方案
您不是在创建表格。
这是一个简单的例子:
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”。
表的名称必须相同。
推荐阅读
- scala - 检查 Array[T] 是否在没有本地 tailrec 的情况下排序?
- java - 如何使用按位运算符从 Java 中的整数交换数字?
- powerbi - 在成员加入者和离开者上设置 Power BI 警报
- php - 单击表单中的事件列表
- c# - 是否可以获得作为`params object []`传递的变量名称?
- react-native - 反应原生嵌套 flex
- octave - 如何使用包括矩阵在内的多个参数从终端运行 ocatve 命令?
- javascript - 事件不向控制器触发视图并且不在 mvc 中的控制器中传递值
- scala - Scala 的@transient 有错误吗?
- swift - 如何在某些特定条件下使用 swift 在 nscollectionview 中禁用滚动