Flutter(二十九)——封装SQLHelpers

本文介绍了在Flutter项目中封装SQLHelpers以优化数据库操作的方法。通过实例展示了如何创建NewsProvider来管理新闻数据,以及在上班打卡应用中如何使用封装后的DBProvider进行数据存储和查询。文中还包含了用户打卡系统的界面设计和数据库操作代码。
摘要由CSDN通过智能技术生成

居天下之广居,立天下之正位,行天下之大道;得志,与民由之;不得志,独行其道。富贵不能淫,贫贱不能移,威武不能屈,此之谓大丈夫。

前言

在实际的项目中,如果碰到一个数据库操作,就使用一条SQL语句对数据库操作,那么不仅仅代码非常杂乱,而且弄不好可能造成内存溢出,所以我们常常需要封装SQL操作,封装成SQLHelpers来进行操作。
最终实现效果
有过后端开发经验的程序员来说,都或多或少使用过SQLHelpers的帮助类,下面,博主通过一个例子详解SQLHelpers如何封装。

封装SQLHelpers

假如现在博主这里有一个需求,需要做一个新闻类的App,新闻有标题和详细信息,那么如何创建一个SQLHelpers来操作新闻数据呢?不妨直接上代码把:

import 'package:sqflite/sqflite.dart';

final String tableNew='news';
final String columnId='_Id';
final String columnTitle='title';
final String columnDet='detailed';

class News{
   
  int id;
  String title;
  String detailed;

  /***
   * 将数据转换为键值对
   */
  Map<String,dynamic> toMap() {
   
    var map = <String, dynamic>{
   
      columnTitle: title,
      columnDet: detailed,
    };
    if (id != null) {
   
      map[columnId] = id;
    }
    return map;
  }
    
    
    News();

  /***
   * 将数据转换为类
   */
  News.fromMap(Map<String,dynamic> map){
   
      id=map[columnId];
      title=map[columnTitle];
      detailed=map[detailed];
    }
}

class NewsProvider{
   
  Database db;

  /***
   * 打开数据库并创建表格
   */
  Future open(String path) async{
   
    db=await openDatabase(path,version: 1,onCreate: (Database db,int version) async{
   
      await db.execute('''
        create table $tableNew(
        $columnId integer primary key autoincrement,
        $columnTitle text not null,
        $columnDet text not null)
      ''');
    });
  }

  /***
   * 插入数据
   */
  Future<News> insert(News news) async{
   
    news.id=await db.insert(tableNew, news.toMap());
    return news;
  }

  /***
   * 根据ID获取数据
   */
  Future<News> getNews(int id)async{
   
    List<Map> maps=await db.query(
        tableNew,
        columns: [columnId
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值