sqlite_flutter_pcl 0.0.49 copy "sqlite_flutter_pcl: ^0.0.49" to clipboard
sqlite_flutter_pcl: ^0.0.49 copied to clipboard

is a Flutter library that simplifies SQLite database management in your applications. It provides a clean and intuitive API for creating, reading, updating, and deleting database records, making it ea [...]

SQLiteConnection Dart Library #

SQLiteConnection provides a streamlined interface for interacting with SQLite databases in Dart, supporting various operations like search, insert, update, delete, and more.

Features #

  • Search Operations: Case-insensitive, column-specific, multi-column search.
  • Insert Operations: Single and batch insertions.
  • Update Operations: Single and batch updates with conflict handling.
  • Delete Operations: Single and batch deletions.
  • Advanced Queries: Group by, pagination, and random row retrieval.
  • Database Management: Table creation, dropping, and backups.

Getting Started #

Add the package to your pubspec.yaml:

dependencies:
  sqlite_flutter_pcl: ^1.0.0
copied to clipboard

Basic Usage #

Initialization #


import 'package:sqlite_flutter_pcl/sqlite_connection.dart';

# Create table class implements ISQLiteItem

```dart
class SqlModel implements ISQLiteItem {
  static const String tableName = 'sql_model';
  static const String tableId = 'id';
  static const String tableTitle = 'title';
  static const String tableValue = 'value';


  int? id;
  String? title;
  String? value;

  SqlModel({this.id, this.title, this.value});

  @override
  String getTableName() {
    return tableName;
  }

  @override
  int getPrimaryKey() {
    return id ?? 0;
  }

  @override
  Map<String, dynamic> toMap() {
    return {
      tableId: id,
      tableTitle: title,
      tableValue: value,
    };
  }

  @override
  String getPrimaryKeyName() {
    return tableId;
  }

  @override
  ISQLiteItem fromMap(Map<String, dynamic> map) {
    return SqlModel(
      id: map[tableId],
      title: map[tableTitle],
      value: map[tableValue],
    );
  }
}

copied to clipboard

Create instance of SQLiteConnection #

   //Init if SQLiteConnection not initialize when new instance created
    SQLiteConnection.initDatabaseLib();
    //Sqlite filepath
    final databasePath = await getTemporaryDatabaseFilePath();
    final connection = SQLiteConnection(path: databasePath);
    //create table
    connection.createTable(SqlModel());
    //insert new item;
    var newItem = SqlModel(title: 'Title 1', value: 'Value 1');
    await connection.insert(newItem);
    //retrieve items
    var isqliteItems = await connection.toList(SqlModel());
    //convert to type list
    var items = isqliteItems.whereType<SqlModel>().toList();
    var items = isqliteItems.cast<SqlModel>().toList();
    //update items
    for (var item in items) {
      item.value = 'Updated';
      await connection.update(item);
    }
    //OR
    await connection.updateAll(items);
    //delete items
    await connection.deleteAll(items);
    //query single value
    var queryItems = await connection.toListWhere(SqlModel(), 'title', 'Title 1');
    //query items by value
    var queryItems = await connection.searchColumns(SqlModel(), 'title', 'Title 1');

    // Returns a list of items with titles 'title1' and 'title2', using a batch query for efficiency.
    var results = await connection.toListWhereValuesAre(SqlModel(), 'title', ['title1', 'title2']);
    
    //Search across multiple columns. 
    var columnNames = ['word', 'number', 'lemma', 'xlit', 'pronounce', 'description'];
    var items = await db.toListColumns(Strongs(), columnNames, query);

    //Delete all table records
    connection.deleteRecords(SqlModel());
    //Drop table
    connection.dropTable(SqlModel());



    Future<String> getTemporaryDatabaseFilePath() async {
    final directory = await getTemporaryDirectory();
    final path = join(directory.path, 'your_database.db');
    print(path);
    return path;
  }
copied to clipboard

Item #

var sqlItem = SqlModel(title: 'Title 1', value: 'Value 1');
copied to clipboard

Single Item

final id = await connection.insert(sqlItem);
copied to clipboard

Multiple Items

final totalInserted = await connection.insertAll(sqlItems);
copied to clipboard

Update Data #

Single Item

await connection.update(sqlItem);
copied to clipboard

Multiple Items

final totalUpdated = await connection.updateAll(sqlItems);
copied to clipboard

Delete Data #

Single Item

final rowsDeleted = await connection.delete(sqlItem);
copied to clipboard

Multiple Items

final totalDeleted = await connection.deleteAll(sqlItems);
copied to clipboard

Search Data #

final results = await connection.search(sqlItem, 'columnName', 'searchQuery');
copied to clipboard
final results = await connection.searchColumns(
  sqlItem,
  ['column1', 'column2'],
  'searchQuery',
);
copied to clipboard

Exact Match

final result = await connection.whereColumnHasValue(sqlItem, 'columnName', value);
copied to clipboard

Query Data #

Get All Rows

final items = await connection.toList(sqlItem);
copied to clipboard

Filtered Rows

final items = await connection.toListWhereColumnHasValue(sqlItem, 'columnName', value);
copied to clipboard

Paginated Rows

final items = await connection.paginate(sqlItem, limit: 10, offset: 20);
copied to clipboard

Grouped Rows

final items = await connection.groupBy(
  sqlItem,
  ['column1', 'column2'],
  'groupByColumn',
  orderByColumn: 'orderByColumn',
);
copied to clipboard

Utility Functions #

  • Backup Database

    await connection.backupDatabase('/path/to/backup.db');
    
    copied to clipboard
  • Drop Table

    await connection.dropTable(sqlItem);
    
    copied to clipboard
  • Vacuum Database

    await connection.vacuum(sqlItem);
    
    copied to clipboard
  • Count Rows

    final count = await connection.count(sqlItem);
    
    copied to clipboard
  • Retrieve Table Columns

    final columns = await connection.tableColumns('tableName');
    
    copied to clipboard

https://pub.dev/packages/sqlite_flutter_pcl

3
likes
120
points
68
downloads

Publisher

unverified uploader

Weekly Downloads

2024.10.04 - 2025.04.18

is a Flutter library that simplifies SQLite database management in your applications. It provides a clean and intuitive API for creating, reading, updating, and deleting database records, making it easy to work with structured data. With support for data modeling, pagination, and backup functionality, this library enhances your app's data persistence capabilities, allowing developers to focus on building rich user experiences without worrying about underlying database complexities.

Repository (GitHub)

Documentation

Documentation
API reference

License

unknown (license)

Dependencies

flutter, path, path_provider, sqflite, sqflite_common_ffi

More

Packages that depend on sqlite_flutter_pcl