0% found this document useful (0 votes)
72 views2 pages

Dbhelper

This document defines a DatabaseHelper class that implements methods for creating and managing a SQLite database in Flutter. It defines methods for initializing the database, creating a table, and performing CRUD (create, read, update, delete) operations on Note objects that are stored and retrieved from the database as maps. It also includes methods for getting the count of notes and converting the maps retrieved from the database into Note objects.

Uploaded by

Anuj Kumar Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views2 pages

Dbhelper

This document defines a DatabaseHelper class that implements methods for creating and managing a SQLite database in Flutter. It defines methods for initializing the database, creating a table, and performing CRUD (create, read, update, delete) operations on Note objects that are stored and retrieved from the database as maps. It also includes methods for getting the count of notes and converting the maps retrieved from the database into Note objects.

Uploaded by

Anuj Kumar Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

import 'package:sqflite/sqflite.

dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:flutter_app/models/note.dart';

class DatabaseHelper {

static DatabaseHelper _databaseHelper; // Singleton DatabaseHelper


static Database _database; // Singleton Database

String noteTable = 'note_table';


String colId = 'id';
String colTitle = 'title';
String colDescription = 'description';
String colPriority = 'priority';
String colDate = 'date';

DatabaseHelper._createInstance(); // Named constructor to create instance of


DatabaseHelper

factory DatabaseHelper() {

if (_databaseHelper == null) {
_databaseHelper = DatabaseHelper._createInstance(); // This is
executed only once, singleton object
}
return _databaseHelper;
}

Future<Database> get database async {

if (_database == null) {
_database = await initializeDatabase();
}
return _database;
}

Future<Database> initializeDatabase() async {


// Get the directory path for both Android and iOS to store database.
Directory directory = await getApplicationDocumentsDirectory();
String path = directory.path + 'notes.db';

// Open/create the database at a given path


var notesDatabase = await openDatabase(path, version: 1, onCreate:
_createDb);
return notesDatabase;
}

void _createDb(Database db, int newVersion) async {

await db.execute('CREATE TABLE $noteTable($colId INTEGER PRIMARY KEY


AUTOINCREMENT, $colTitle TEXT, '
'$colDescription TEXT, $colPriority INTEGER, $colDate
TEXT)');
}

// Fetch Operation: Get all note objects from database


Future<List<Map<String, dynamic>>> getNoteMapList() async {
Database db = await this.database;

// var result = await db.rawQuery('SELECT * FROM $noteTable order by


$colPriority ASC');
var result = await db.query(noteTable, orderBy: '$colPriority ASC');
return result;
}

// Insert Operation: Insert a Note object to database


Future<int> insertNote(Note note) async {
Database db = await this.database;
var result = await db.insert(noteTable, note.toMap());
return result;
}

// Update Operation: Update a Note object and save it to database


Future<int> updateNote(Note note) async {
var db = await this.database;
var result = await db.update(noteTable, note.toMap(), where: '$colId
= ?', whereArgs: [note.id]);
return result;
}

// Delete Operation: Delete a Note object from database


Future<int> deleteNote(int id) async {
var db = await this.database;
int result = await db.rawDelete('DELETE FROM $noteTable WHERE $colId =
$id');
return result;
}

// Get number of Note objects in database


Future<int> getCount() async {
Database db = await this.database;
List<Map<String, dynamic>> x = await db.rawQuery('SELECT COUNT (*) from
$noteTable');
int result = Sqflite.firstIntValue(x);
return result;
}

// Get the 'Map List' [ List<Map> ] and convert it to 'Note List'


[ List<Note> ]
Future<List<Note>> getNoteList() async {

var noteMapList = await getNoteMapList(); // Get 'Map List' from


database
int count = noteMapList.length; // Count the number of map
entries in db table

List<Note> noteList = List<Note>();


// For loop to create a 'Note List' from a 'Map List'
for (int i = 0; i < count; i++) {
noteList.add(Note.fromMapObject(noteMapList[i]));
}

return noteList;
}

You might also like