admin
2022-03-31 36754ba47da7a3277d5be183a523c912a1dc4cef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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!;
  }
}