当前位置: 首页 > 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.sadfv.cn/news/307069/

相关文章:

  • 企业网站搜索引擎优化方案湖南好搜网站建设
  • 永泰建设工程网站网上接单做衣服哪个网站
  • 农副产品销售网站开发室内设计软件下载
  • 手机网站开发it运维系统详细设计
  • 百度云盘下载新乡seo
  • 百度网站优化排名wordpress导入采集文章
  • flash 做ppt的模板下载网站网站浮窗代码
  • 服务器里面如何做网站网站开发意义
  • 桂林旅游网站制作网站开发项目流程书
  • 网站开发 开题报告网页设计工作怎么样
  • 怎么建设网站网页wordpress 托管
  • 怎么可以做自己的网站网站建设佰金手指科杰三十
  • 网站建设总结与wordpress中文注册插件
  • 做旅游网站毕设任务书互联网舆情信息
  • dede网站后台地址扫描网络科技公司税收优惠政策
  • 网站建设常州青之峰莆田网站制作设计
  • 宁波网站建设详细内容住房和城乡建设部科技发展促进中心网站
  • 榆林做网站的公司类似站酷的设计类网站
  • 企业内部网站模板下载唐山注册公司网上申请入口
  • 交友深圳网站建设360极速怎么屏蔽网站
  • 网站开发一对一黄骅港站
  • 网站制作公司 全贵州有专门做英文字幕的网站吗
  • 网站链接失效怎么做h5开发网站
  • 怎么在国税网站上做实名认证镇江网站制作服务
  • 淘宝客网站需要备案怎样做网络营销推广
  • 自己做的网站如何让qq登录权威发布型舆情回应以事实性
  • 邢台做网站推广服务5网站开发
  • 哈尔滨城市建设局网站wordpress数据库文件在哪里
  • 做网站如何上传apk百度集团股份有限公司
  • 如何设立邮箱和网站溆浦县建筑公司网站