首页 > 解决方案 > 如何在颤振sqlite中制作表格?

问题描述

我的颤振代码中有一个错误,我想创建一个简单的数据库并对其进行测试。我有一个代码,但是当我点击必须返回我在表中添加的项目数的按钮时,控制台给了我一个错误。

E/SQLiteLog(5696):(1)没有这样的表:“插入数据(id,标题,文本)值(?,?,?)”中的数据 E/flutter(5696):[错误:flutter/lib/ ui/ui_dart_state.cc(199)] 未处理的异常:DatabaseException(没有这样的表:数据(代码 1 SQLITE_ERROR):,编译时:插入数据(id,标题,文本)值(?,?,?)) sql ' INSERT INTO datas (id, title, text) VALUES (?, ?, ?)' args [1, l, 1]} 这是我的数据库助手文件

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 result;
  }

  Future<List<Map<String, Object?>>> retrieveUsers() async {
    final Database db = await initializeDB();
    final List<Map<String, Object?>> queryResult = await db.query('datas');
    return queryResult;
  }
}

这是我的应用程序设计的主要文件

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")),
            ],
          ),
        ),
      ),
    );
  }
}

这是我的数据类文件


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};
   }

}

标签: databasefluttersqlitedart

解决方案


推荐阅读