import 'package:sqflite/sqflite.dart';
|
import 'package:path_provider/path_provider.dart';
|
import 'dart:io';
|
|
class SQLiteUtil {
|
static const String DB_NAME = "hanju.db";
|
|
static Future<Database> _getDB() async {
|
var path = await getDatabasesPath() + "/$DB_NAME";
|
print("databasepath:$path");
|
Database database = await openDatabase(path, version: 1,
|
onCreate: (Database db, int version) async {
|
// TODO
|
List<String> tables =[];
|
for (var i = 0; i < tables.length; i++) {
|
await db.execute(tables[i]);
|
}
|
});
|
return database;
|
}
|
|
static Future executeSQL(String sql) async {
|
var db = await openDatabase("");
|
await db.execute(sql);
|
await db.close();
|
}
|
|
static Future executeSQLWithParams(String sql, List params) async {
|
var db = await _getDB();
|
await db.execute(sql, params);
|
await db.close();
|
}
|
|
static Future executeSQLs(List<String> sqls) async {
|
var db = await _getDB();
|
for (var i = 0; i < sqls.length; i++) {
|
await db.execute(sqls[i]);
|
}
|
await db.close();
|
}
|
|
///批量插入
|
///sql示例:INSERT INTO artists (name) VALUES (?)
|
static Future insert(String sql, List<List> list) async {
|
var db = await _getDB();
|
await db.transaction((txn) async {
|
for (var i = 0; i < list.length; i++) {
|
await txn.rawInsert(sql, list[i]);
|
}
|
});
|
await db.close();
|
}
|
|
///查询
|
static Future<List<Map>> select(String sql, List params) async {
|
var db = await _getDB();
|
List<Map> list = await db.rawQuery(sql, params);
|
await db.close();
|
return list;
|
}
|
|
static Future<int> count(String sql, List params) async {
|
var db = await _getDB();
|
int? count = Sqflite.firstIntValue(await db.rawQuery(sql, params));
|
await db.close();
|
return count!;
|
}
|
}
|