Flutter 5 大本地数据库解决方案

Flutter 5 大本地数据库解决方案

Flutter 5 大本地数据库解决方案

原文 https://levelup.gitconnected.com/top-5-local-database-solutions-for-flutter-development-6351cd494070

前言

这里列出了最流行的数据库解决方案以及代码示例。

Flutter 5 大本地数据库解决方案

选择正确的数据管理系统对于提高效率和可 extension 性以及影响可用性和用户体验至关重要。尽管 flutter 仍然处于早期阶段,但是有很多数据管理解决方案可供选择,其中一些已经可以投入生产。我将概述用于在本地维护数据的最常见的数据库管理系统。

正文

Sqflite 是一个著名的 SQLite flutter 插件。这是一个具有良好交易和批量支持的关系数据库。当数据库打开时,它会自动管理版本控制。它还包括用于常见 CRUD 操作的帮助器。后台线程处理所有数据库操作。它与 ACID 兼容,因此几乎支持所有 SQL 标准。如果您喜欢将自己的 SQL 查询编写为字符串,那么这个简单的插件将满足您的数据管理需求。

<br>Database&#xA0;database&#xA0;=&#xA0;<span class="hljs-keyword">await</span>&#xA0;openDatabase(path,&#xA0;version:&#xA0;<span class="hljs-number">1</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;onCreate:&#xA0;(Database&#xA0;db,&#xA0;<span class="hljs-built_in">int</span>&#xA0;version)&#xA0;<span class="hljs-keyword">async</span>&#xA0;{
   <br>&#xA0;&#xA0;<br>&#xA0;&#xA0;<span class="hljs-keyword">await</span>&#xA0;db.execute(<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-string">'CREATE&#xA0;TABLE&#xA0;Test&#xA0;(id&#xA0;INTEGER&#xA0;PRIMARY&#xA0;KEY,&#xA0;name&#xA0;TEXT,&#xA0;value&#xA0;INTEGER,&#xA0;num&#xA0;REAL)'</span>);<br>});<br><br><br><span class="hljs-keyword">await</span>&#xA0;database.transaction((txn)&#xA0;<span class="hljs-keyword">async</span>&#xA0;{
   <br>&#xA0;&#xA0;<span class="hljs-built_in">int</span>&#xA0;id1&#xA0;=&#xA0;<span class="hljs-keyword">await</span>&#xA0;txn.rawInsert(<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-string">'INSERT&#xA0;INTO&#xA0;Test(name,&#xA0;value,&#xA0;num)&#xA0;VALUES("some&#xA0;name",&#xA0;1234,&#xA0;456.789)'</span>);<br>&#xA0;&#xA0;<span class="hljs-built_in">print</span>(<span class="hljs-string">'inserted1:&#xA0;<span class="hljs-subst">$id1</span>'</span>);<br>&#xA0;&#xA0;<span class="hljs-built_in">int</span>&#xA0;id2&#xA0;=&#xA0;<span class="hljs-keyword">await</span>&#xA0;txn.rawInsert(<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-string">'INSERT&#xA0;INTO&#xA0;Test(name,&#xA0;value,&#xA0;num)&#xA0;VALUES(?,&#xA0;?,&#xA0;?)'</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;[<span class="hljs-string">'another&#xA0;name'</span>,&#xA0;<span class="hljs-number">12345678</span>,&#xA0;<span class="hljs-number">3.1416</span>]);<br>&#xA0;&#xA0;<span class="hljs-built_in">print</span>(<span class="hljs-string">'inserted2:&#xA0;<span class="hljs-subst">$id2</span>'</span>);<br>});<br><br><br><span class="hljs-built_in">int</span>&#xA0;count&#xA0;=&#xA0;<span class="hljs-keyword">await</span>&#xA0;database.rawUpdate(<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-string">'UPDATE&#xA0;Test&#xA0;SET&#xA0;name&#xA0;=&#xA0;?,&#xA0;value&#xA0;=&#xA0;?&#xA0;WHERE&#xA0;name&#xA0;=&#xA0;?'</span>,<br>&#xA0;&#xA0;&#xA0;&#xA0;[<span class="hljs-string">'updated&#xA0;name'</span>,&#xA0;<span class="hljs-string">'9876'</span>,&#xA0;<span class="hljs-string">'some&#xA0;name'</span>]);<br><span class="hljs-built_in">print</span>(<span class="hljs-string">'updated:&#xA0;<span class="hljs-subst">$count</span>'</span>);<br><br><br><span class="hljs-built_in">List</span><<span class="hljs-built_in">Map</span>>&#xA0;list&#xA0;=&#xA0;<span class="hljs-keyword">await</span>&#xA0;database.rawQuery(<span class="hljs-string">'SELECT&#xA0;*&#xA0;FROM&#xA0;Test'</span>);<br><span class="hljs-built_in">List</span><<span class="hljs-built_in">Map</span>>&#xA0;expectedList&#xA0;=&#xA0;[<br>&#xA0;&#xA0;{
   <span class="hljs-string">'name'</span>:&#xA0;<span class="hljs-string">'updated&#xA0;name'</span>,&#xA0;<span class="hljs-string">'id'</span>:&#xA0;<span class="hljs-number">1</span>,&#xA0;<span class="hljs-string">'value'</span>:&#xA0;<span class="hljs-number">9876</span>,&#xA0;<span class="hljs-string">'num'</span>:&#xA0;<span class="hljs-number">456.789</span>},<br>&#xA0;&#xA0;{

Original: https://blog.csdn.net/weixin_42320543/article/details/128071431
Author: 会煮咖啡的猫咪
Title: Flutter 5 大本地数据库解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817567/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球