litesql 1.0.2 copy "litesql: ^1.0.2" to clipboard
litesql: ^1.0.2 copied to clipboard

SQLite3 wrap.

LiteSQL #

SQLite wrap for package 'sqlite3'.

Usage #

  • define a enum table.

enum Person with ETable<Person> {
  id(EColumn.integer(primaryKey: true)),
  name(EColumn.text()),
  addr(EColumn.text(name: "address")),
  age(EColumn.integer());

  const Person(this.column);

  @override
  final EColumn column;

  @override
  List<Person> get columns => Person.values;
}

  • migrate table.
  LiteSQL lite = LiteSQL.openMemory();
  lite.migrateEnumTable(Person.values);

output: CREATE TABLE IF NOT EXISTS Person ( id INTEGER PRIMARY KEY, name TEXT, address TEXT, age INTEGER )

  • insert rows.
  int rowid1 = lite.insertRow("Person", ["name" >> "entao1", "age" >> 41, "address" >> "Jinan1"]);
  int rowid2 = lite.insertRow("Person", ["name" >> "entao2", "age" >> 42, "address" >> "Jinan2"]);
  int rowid3 = lite.insertRow("Person", ["name" >> "entao3", "age" >> 43, "address" >> "Jinan3"]); 
  • query rows.
  EnumTable e = lite.from(Person);
  ResultSet rs = e.query(Person, columns: [Person.id, Person.name], where: Person.id.EQ(2));
  rs.dump();

output: SELECT id, name FROM Person WHERE id = 2 id: 2, name: entao2

  • model result. first define a model.

class PersonModel extends ModelSQL {
  PersonModel(super.mapSQL);

  int get id => get("id");

  set id(int value) => set("id", value);

  String? get name => get(Person.name);

  set name(String? value) => set(Person.name, value);

  String? get addr => get(Person.addr);

  set addr(String? value) => set(Person.addr, value);

  int? get age => get("age");

  set age(int? value) => set("age", value);
}

then use listXXX, or oneXXX, with a model creator.

  PersonModel? p = e.one(PersonModel.new, where: Person.name.EQ("entao2"));
  println(p);

output: {"id":2,"name":"entao2","address":"Jinan2","age":42}

  • functions
ResultSet r = e.query(columns: [Person.id.MAX()]);
println("max(id): ", r.oneValue); 

output: max(id): , 3

  • dispose
  lite.dispose();