当前位置: 首页 > news >正文

龙岗网站建设公司哪家好网站上做网页怎么改图片

龙岗网站建设公司哪家好,网站上做网页怎么改图片,有限公司和股份有限公司的区别,北京网站推广排名前言 今天在观阅掘金大佬文章的时候#xff0c;了解到了该 sqflite 插件#xff0c;结合官网教程和自己实践#xff0c;由此总结出该文#xff0c;希望对大家的学习有帮助#xff01; 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式…前言 今天在观阅掘金大佬文章的时候了解到了该 sqflite 插件结合官网教程和自己实践由此总结出该文希望对大家的学习有帮助 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式打开时自动进行版本管理插入/查询/更新/删除查询的助手iOS 和 Android 上的数据库操作在后台线程中执行 插件地址: https://pub.dev/packages/sqflite 本文使用插件版本为最新版本2.3.0 基础介绍 数据表创建 openDatabase() 连接数据库deleteDatabase() 删除数据库 openDataBase方法 可选参为db文件地址、版本号、相关回调 案例速览 late Database db; final database book.db; final table book;/** author Marinda* date 2023/12/13 15:53* description 连接数据库*/ connection() async{//获取var databasePath await getDatabasesPath();String path p.join(databasePath,database);//删除数据库await deleteDatabase(path);print(当前地址${path});if(File(path).existsSync()){db await openDatabase(path);}else{db await openDatabase(path,version: 1,onCreate: (database,version) async{database.execute(CREATE TABLE ${table} (id integer primary key autoincrement,name text not null,price REAL ,author TEXT NOT NULL,description TEXT));});} }语句介绍 CURD方法介绍 使用SQL语句的CURD前缀带raw (例如rawInsert)官方封装好的CURD语句不带raw(例如insert) -全文使用该方法 语法速览 //前者 Futureint rawInsert(String sql, [ListObject?? arguments]); //后者 Futureint insert(String table, MapString, Object? values,{String? nullColumnHack, ConflictAlgorithm? conflictAlgorithm});接下来看几个简单的CURD快速了解写法 insert(插入) Futureint insert() async{MapString,dynamic args {id: 1,name: 张飞,description: 猛将};//返回id table为表名return await db.insert(table,args); }delete(删除) Futureint delete(int id) async{return await db.delete(table,where: id ?,whereArgs: [id]); }update(修改) Futureint update() async{MapString,dynamic args {id: 1,name: 吕布,description: 天下无双};return await db.update(table, args,where: id ?,whereArgs: [args[id]]); }select(查询) /** author Marinda* date 2023/12/13 16:11* description 通过id查询*/ FutureMapString,dynamic? selectById(int id) async{var list await db.query(table,where: id ?,whereArgs: [id]);if(list.isNotEmpty){return list.first;}return null; }现在我们对sqflite插件的基础使用有一个初步的了解了接下来围绕一个书本表案例做实战 实战应用 定义Book书表作为实体类定义DBBookProvider类处理数据库表 book.dart /*** author Marinda* date 2023/12/13 15:42* description 书籍信息*/ class Book {int? _id;String? _name;double? _price;String? _author;String? _description;Book({int? id,String? name,double? price,String? author,String? description}) {if (id ! null) {this._id id;}if (name ! null) {this._name name;}if (price ! null) {this._price price;}if (author ! null) {this._author author;}if (description ! null) {this._description description;}}int? get id _id;set id(int? id) _id id;String? get name _name;set name(String? name) _name name;double? get price _price;set price(double? price) _price price;String? get author _author;set author(String? author) _author author;String? get description _description;set description(String? description) _description description;Book.fromJson(MapString, dynamic json) {_id json[id];_name json[name];_price json[price];_author json[author];_description json[description];}MapString, dynamic toJson() {final MapString, dynamic data new MapString, dynamic();data[id] this._id;data[name] this._name;data[price] this._price;data[author] this._author;data[description] this._description;return data;} }db_book_provider.dart /*** author Marinda* date 2023/12/13 15:43* description 书籍数据库适配器*/class DBBookProvider{late Database db;final database book.db;final table book;static DBBookProvider? _instance;static DBBookProvider instance getInstance();DBBookProvider._();factory DBBookProvider(){return instance;}static getInstance(){if(_instance null){_instance DBBookProvider._();}return _instance ?? DBBookProvider._();}/** author Marinda* date 2023/12/13 15:53* description 连接数据库*/connection() async{var databasePath await getDatabasesPath();String path p.join(databasePath,database);// await deleteDatabase(path);print(当前地址${path});if(File(path).existsSync()){db await openDatabase(path);}else{db await openDatabase(path,version: 1,onCreate: (database,version) async{database.execute(CREATE TABLE ${table} (id integer primary key autoincrement,name text not null,price REAL ,author TEXT NOT NULL,description TEXT));});}}/** author Marinda* date 2023/12/13 16:01* description 关闭数据库*/close() async{await db.close();}/** author Marinda* date 2023/12/13 16:02* description 插入*/FutureBook insert(Book book) async{int id await db.insert(table,book.toJson());book.id id;return book;}/** author Marinda* date 2023/12/13 16:08* description 删除id*/Futureint delete(int id) async{return await db.delete(table,where: id ?,whereArgs: [id]);}/** author Marinda* date 2023/12/13 16:11* description 通过id查询*/FutureBook? selectById(int id) async{var list await db.query(table,where: id ?,whereArgs: [id]);if(list.isNotEmpty){return Book.fromJson(list.first);}return null;}/** author Marinda* date 2023/12/13 16:13* description 获取所有书籍列表*/FutureListBook queryList() async{svar result await db.query(table);return result.map((e) Book.fromJson(e)).toList();}/** author Marinda* date 2023/12/13 16:15* description 修改书籍信息*/Futureint update(Book book) async{return await db.update(table, book.toJson(),where: id ?,whereArgs: [book.id]);}}实例化调用 initDatabase() async{DBBookProvider dbBookProvider DBBookProvider.instance;//连接await dbBookProvider.connection();Book book Book(name: 斗破苍穹,author: 天蚕土豆,price: 88.00,description: 一本不错的小说);//插入Book element await dbBookProvider.insert(book);print(element : ${element.toJson()});//删除for(var id in result){await dbBookProvider.delete(id);}Book newBook Book.fromJson(book.toJson());newBook.id 1;newBook.author 天蚕土豆;//修改await dbBookProvider.update(newBook);//查询全部var list await dbBookProvider.queryList();print(当前列表: ${list.map((e) e.toJson()).toList()}); }事务batch 单独拉出来讲讲的原因是我在应用中踩了个坑 事务和batch是什么这个大家如果不了解的话自行百度一下下文带大家简单看看案例 /** author Marinda* date 2023/12/13 16:17* description 批量插入全部书籍列表*/ insertAll(ListBook bookList) async{List resultList [];await db.transaction((txn) async{Batch batch txn.batch();for(var book in bookList){batch.insert(table,book.toJson());}//返回全部结果并且不跳过错误resultList await batch.commit(noResult: false,continueOnError: false);print(resultList: ${resultList});});await close();return resultList; }注在该案例中配合事务 batch.commit方法中如果continueOnError为false时 出现异常则会中止导致前面插入回推。 注在该insertAll()方法 或其他涉及事务的方法都要执行完毕后主动调用close() 断开本次连接。否则会导致 Error DomainFMDatabase Code5 “database is locked” 如果已经出现 Error DomainFMDatabase Code5 “database is locked” 错误请删除该数据库文件重新生成。 结束语 感谢你的观看希望对大家学习有帮助有不对的地方欢迎指正
http://www.huolong8.cn/news/307069/

相关文章:

  • 细胞医疗 网站模版价格对比网站开发
  • 成都网站定制建设什么网站专门做二手物品
  • 做电商网站都需要学什么条件wordpress 源码下载主题
  • 廊坊网站建设的公司做网站练手
  • 万众城网站建设小米网络营销案例分析
  • 关于手机的网站有哪些内容吗潍坊专业网站制作公司营销
  • 北京网站建设91086武进做网站的公司
  • 湖南网站开发公司电话上海公司注册流程及费用标准
  • 英文网站建设服务合同企业做网站都需要准备哪些材料
  • 室内设计网站配色app深圳品牌公寓
  • 网站单页seo网站须知
  • 做地方门户网站的排名wordpress hook 数据库
  • 网站后台在哪里大都会app支持城市
  • 免费做网站的网址有哪些免费开网站
  • 做网站还是小程序承德名城建设集团网站
  • 保险购买网站宁波建网站模板
  • 电子商务网站建设体会在本地服务器上建设网站的步骤
  • 摄影网站的设计wordpress加漂浮广告
  • 西安微官网自助建站公司网站建设 淘宝客末班
  • 做照片相册最好的网站网站运营需要 做哪些工作
  • 网站建设什么代码最简单wordpress 社交登陆
  • 自己做网站咋做网站地图 seo
  • 免费网站现在是怎么了做网站的皮包公司
  • 网站备案要幕布自媒体平台账号注册
  • 企业网站建设背景安徽省建筑人员信息网
  • pc网站自动生成app制作电子印章
  • 哪个浏览器任何网站都可以访问wordpress显示网站在线人数
  • 做产品推广什么网站会比较好pc手机模板网站建设
  • 常见的有利于seo的网站系统wordpress网站数据迁移
  • 马鞍山网站建设制作公司如今做那些网站能致富