[Flutter]SQLite

閱讀時間約 5 分鐘

加入套件

在pubspec.yaml添加sqflite與path_provider。


建立數據模型

  • id:識別欄位,唯一值為整數資料類型
  • name:存放名字為字串資料類型
class People {
final int? id;
final String? name;

Student({this.id, this.name});

Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
};
}
}


建立資料庫接口

class DatabaseHelper {
static final _databaseName = "your_database_name.db";
static final _databaseVersion = 1;

static final table = 'your_table';


//Singleton 單例模式,確保一個類別只有一個實例
DatabaseHelper._privateConstructor();

static final DatabaseHelper instance = DatabaseHelper._privateConstructor();


static Database? _database;

Future<Database?> get database async {
if (_database != null) return _database;
_database = await _initDatabase();
return _database;
}

_initDatabase() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(path,
version: _databaseVersion, onCreate: _onCreate);
}

Future _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE $table (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
)
''');
}


Future<int> insert(Map<String, dynamic> row) async {
Database? db = await instance.database;
return await db!.insert(table, row);
}


Future<List<Map<String, dynamic>>> queryAllRows() async {
Database? db = await instance.database;
return await db!.query(table);
}


Future<int?> queryRowCount() async {
Database? db = await instance.database;
return Sqflite.firstIntValue(
await db!.rawQuery('SELECT COUNT(*) FROM $table'));
}

Future<int> update(Map<String, dynamic> row) async {
Database? db = await instance.database;
int id = row['id'];
return await db!.update(table, row, where: 'id = ?', whereArgs: [id]);
}

Future<int> delete(int id) async {
Database? db = await instance.database;
return await db!.delete(table, where: 'id = ?', whereArgs: [id]);
}
}








7會員
112內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
[Flutter]Drawer
閱讀時間約 3 分鐘
[Flutter]套件管理
閱讀時間約 1 分鐘
[Flutter]ListView
閱讀時間約 3 分鐘
[Flutter]GridView
閱讀時間約 1 分鐘
[Flutter]Table
閱讀時間約 1 分鐘
[Flutter]SharedPreferences
閱讀時間約 1 分鐘
你可能也想看
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
閱讀心得:展現自我的生活態度|成熟大人的說話課我們每天都在說話,但說出的話合適嗎? Sunny最近讀完一本有關溝通的書籍。 這是由世紀奧美公關的創辦人「丁菱娟」所寫的書,書的全名《丁菱娟的成熟大人說話課:如何說,才能得體又不傷人?反擊時,如何堅定又有力量?任何情境都可用的38個溝通之道》。 會找這本書來看,主要是因為Sunny 近期發
Thumbnail
2024-07-10
防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
Thumbnail
Flutter筆記 - 螢幕顯示方向 Screen View Orientation今天來寫點FLutter的筆記吧 如果我們想要在APP中限制使用者的畫面顯示方向,不支持使用者橫放造成畫面佈局異常,或是想要在全螢幕顯示強制變橫向顯示,該怎麼做呢?
2023-12-21
Flutter 遊戲開發,不只是程式:如何從有想法到實現一款遊戲(三)前一篇我們介紹了遊戲模板的基本架構,在這篇文章中會記錄目前的開發進度,主要先把遊戲核心邏輯寫完,再慢慢完成其他功能,在這系列的文章中,我不會太聚焦於寫程式的部分,如果想看程式內容的話,可以到我的 github 上看喔,讓我們開始吧!
Thumbnail
2023-03-05
Flutter 遊戲開發,不只是程式:如何從有想法到實現一款遊戲(二)前一篇說到遊戲開發的契機以及介紹了開發工具與官方提供的遊戲模板,在這一篇文章中,會開始進行遊戲的設計與製作,目標是上架到 Google Play 與 App Store 平台上,讓我們開始吧!
Thumbnail
2023-03-01
Flutter 遊戲開發,不只是程式:如何從有想法到實現一款遊戲(一)前言 當今時代,遊戲已經不再只是單純的娛樂,更成為人們生活中不可或缺的一部分。隨著技術的發展,遊戲也從單機遊戲轉變成網路遊戲、手機遊戲、虛擬實境(VR)遊戲等多種形式。Flutter 作為一種跨平台的開發框架,正逐漸成為開發遊戲的一個重要工具。本系列文章將以「輕鬆入門 Flutter 遊戲開發」為題
Thumbnail
2023-02-28
Flutter for a very beginnerIntroduction Flutter is a powerful framework for developing the app for different platforms without redevelopment. main.dart route routing map
Thumbnail
2022-08-30
(Flutter) 釣魚資訊平台 - Day1 - 定位因為自己最近迷上了釣魚,但卻常常苦於不知道該去哪裡釣魚才能安全又有魚,因此想做個讓大家可以分享自己釣點以及釣況的App,讓大家都能找到適合自己的地方釣魚! 此篇是在介紹專案基本架構以及獲取使用者的地理位置。
Thumbnail
2022-08-04
Flutter入門指南如果你是剛入門Flutter的工程師,可以參考這篇文章,我會告訴大家自己常用的套件以及如何規劃檔案的分類!
Thumbnail
2022-08-04
Flutter Web image hover zoom(實現圖片懸浮縮放)在flutter內實現當鼠標懸停時圖片縮放
Thumbnail
2022-04-24
Flutter 模組(Module) 專案範例(Android)說明Flutter 模組(Module)專案範例的架構與如何載入Android專案中的流程與執行畫面
Thumbnail
Flutter 插件 (Plugins) 專案範例說明Flutter 插件(Plugin)專案範例的架構與實際載入並執行在各平台的顯示畫面
Thumbnail