#database #flutter #sqlite #dart
Вопрос:
У меня ошибка в коде flutter, я хочу создать простую базу данных и протестировать ее.У меня есть код,но когда я нажимаю на кнопку, которая должна вернуть мне номер элемента, который я добавил в свою таблицу, консоль выдает мне ошибку.
E/SQLiteLog( 5696): (1) такой таблицы нет: данные в «ВСТАВИТЬ В данные (идентификатор, заголовок, текст) ЗНАЧЕНИЯ (?, ?, ?)» E/flutter ( 5696): [ОШИБКА:flutter/lib/ui/ui_dart_state.cc(199)] Необработанное исключение: DatabaseException(нет такой таблицы: данные (код 1 SQLITE_ERROR): , при компиляции: вставить в данные (идентификатор, заголовок, текст) значения (?, ?, ?)) в SQL вставить в данные (идентификатор, заголовок, текст) значения (?, ?, ?)’ параметр args [1, л, 1]} Это мой databasehelper файл
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'dataclass.dart';
class DatabaseHelper {
Future<Database> initializeDB() async {
String path = await getDatabasesPath();
return openDatabase(
join(path, 'example.db'),
onCreate: (Database database, version) async {
await database.execute(
'CREATE TABLE datas(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL,text TEXT NOT NULL)',
);
},
version: 1,
);
}
Future<int> insertUser(List<Data> data) async {
int result = 0;
final Database db = await initializeDB();
for (var data in data) {
result = await db.insert('datas', data.toMap());
}
return resu<
}
Future<List<Map<String, Object?>>> retrieveUsers() async {
final Database db = await initializeDB();
final List<Map<String, Object?>> queryResult = await db.query('datas');
return queryResu<
}
}
это мой основной файл с дизайном приложений
import 'package:flutter/material.dart';
import 'package:sharetest/test.dart';
import 'package:sqflite/sqflite.dart';
import 'dataclass.dart';
import 'dbhelper.dart';
TextEditingController t = TextEditingController();
void main()
{WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late DatabaseHelper helper;
@override
void initState() {
// TODO: implement initState
super.initState();
this.helper = DatabaseHelper();
this.helper.initializeDB();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Saving data'),
),
body: Center(
child: Container(
alignment: Alignment.center,
child: Column(
children: [
FlatButton(
onPressed: ()async {
Data d= Data(id:1,title: "l",text: "1");
List<Data> l=[d];
int i= await this.helper.insertUser(l);
print('Sucsecc' i.toString());
},
child: Text("insert")),
FlatButton(
onPressed: () {
},
child: Text("query")),
FlatButton(
onPressed: () {
},
child: Text("update")),
FlatButton(
onPressed: () {
},
child: Text("delete")),
],
),
),
),
);
}
}
this is my data class file
class Data {
late final int? id;
late final String title;
late final String text;
Data({
this.id,
required this.title,
required this.text,
});
// Convert a Dog into a Map. The keys must correspond to the names of the
// columns in the database.
Data.fromMap(Map<String,dynamic> res, this.id, this.title, this.text)
{
id=res["id"];
title=res['title'];
text= res['text'];
}
Map<String, Object?> toMap() {
return {'id':id,'title':title,'text':text};
}
}