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

seo网站推广怎样wordpress主题seo模板

seo网站推广怎样,wordpress主题seo模板,网站建设程序制作,兰州营销型网站建设前言 今天在观阅掘金大佬文章的时候#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.tj-hxxt.cn/news/130368.html

相关文章:

  • 深圳网站建设与制作公司网络推广方案案例
  • 自己做视频网站资源从哪里来wordpress公告栏插件
  • 网站建设行业发展史惠州网站建设制作价格
  • seo网站优化培训多少价格国家企业信用网官网
  • 网站页面组成部分外贸网站 流量
  • 安徽集团网站建设wordpress找回密码链接失效
  • 怎样制作一个自己的网站如何提升网站的收录量
  • 化妆品商城网站建设做ps的素材哪个网站
  • 如何在各个购物网站之间做差价市场营销最有效的手段
  • 网网站建设公司网站建设 制作公司
  • 网站开发手把手门户网站建设课程设计
  • 网站建设策划方美工素材网站
  • 上海艺佳建设发展有限公司网站wordpress 文章空格
  • 大连网站制作赞ls15227国家工商网官网登录入口
  • 人才招聘网站建设方案crm外贸管理软件
  • 如何创建网站?wordpress 媒体库外链
  • 网站信息安全建设方案江苏苏中建设集团股份有限公司网站
  • 创建网站app网站建设要考虑哪些内容
  • c 做网站的六大对象店名logo设计在线生成免费
  • 校园网站建设网站工信部icp备案是什么意思
  • 音乐网站建设目标北京网站开发设计
  • 洪都建设集团有限公司网站设计图网址
  • 赶集网网站建设分析自建域名
  • 淄博圻谷网站建设制作安丘做网站的
  • 济南网站建设yigeseo用网站制作自己app软件
  • 高端响应式网站建设青海网站开发公司
  • 榆次做企业网站专业vi机构
  • pc端网站布局仙桃网站制作网站设计
  • 心理网站免费建设网页设计要用什么软件
  • 企业网站用什么做网站设置的参数