如何在 Flutter 中从 SQLite 获取数据?

Posted

技术标签:

【中文标题】如何在 Flutter 中从 SQLite 获取数据?【英文标题】:How to get data from SQLite in flutter? 【发布时间】:2021-06-02 03:17:39 【问题描述】:

我是 Flutter 和 SQLite 的新手,所以我试图从为 SQLite 创建 DB Browser 的数据库中获取数据。

我在控制台上得到这个: “/flutter (9624): 'Future>>'的实例”

我不知道这是错误还是警告,但我在控制台上看不到数据。

这是我的 main.dart 类和 database_helper 类的代码。

Future<Database> _getDatabase() async 
    if (_database == null) 
      _database = await _initializeDatabase();
      return _database;
     else 
      return _database;
    
  

  Future<Database> _initializeDatabase() async 
    var lock = Lock();
    Database _db;

    if (_db == null) 
      await lock.synchronized(() async 
        if (_db == null) 
          var databasesPath = await getDatabasesPath();
          var path = join(databasesPath, "appDB.db");
          var file = new File(path);

          // check if file exists
          if (!await file.exists()) 
            // Copy from asset
            ByteData data = await rootBundle.load(join("assets", "myNotes.db"));
            List<int> bytes =
                data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
            await new File(path).writeAsBytes(bytes);
          
          // open the database
          _db = await openDatabase(path);
        
      );
    

    return _db;
  

  showCategories() async 
    var db = await _getDatabase();
    var categoryList = db.query("kategori");
    print(categoryList);
  
void main() => runApp(MyApp());

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    var databaseHelper = DatabaseHelper();
    databaseHelper.showCategories();
    return MaterialApp(
      title: 'Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Text(""),
    );
  

【问题讨论】:

尝试在此处添加await:var categoryList = db.query("kategori"); 【参考方案1】:

错误可能是由于返回类型不一致引起的。请查看这篇关于 Flutter 数据库的文章

https://www.tutorialspoint.com/flutter/flutter_database_concepts.htm

【讨论】:

以上是关于如何在 Flutter 中从 SQLite 获取数据?的主要内容,如果未能解决你的问题,请参考以下文章