@@ -34,34 +34,101 @@ Android only, at present. (iOS support is planned.)
34
34
Examples
35
35
--------
36
36
37
- ### Querying an in-memory database
37
+ ### Executing an arbitrary SQL statement
38
38
39
- This example also uses
40
- [ ` DatabaseUtils ` ] ( https://pub.dartlang.org/documentation/flutter_android/latest/android_database/DatabaseUtils-class.html )
41
- from the [ flutter_android] ( https://pub.dartlang.org/packages/flutter_android ) package.
39
+ ``` dart
40
+ await db.execSQL("DROP TABLE IF EXISTS links");
41
+
42
+ // Create a bookmark links table:
43
+ await db.execSQL("""
44
+ CREATE TABLE links (
45
+ id INTEGER PRIMARY KEY NOT NULL,
46
+ url TEXT NOT NULL,
47
+ created_at DATETIME NOT NULL,
48
+ updated_at DATETIME NULL
49
+ )
50
+ """);
51
+ ```
52
+
53
+ ### Executing a ` INSERT ` statement
42
54
43
55
``` dart
44
- import 'package:flutter_sqlcipher/sqlite.dart';
45
- import 'package:flutter_android/android_database.dart' show DatabaseUtils;
56
+ // Insert a new link into the table:
57
+ var linkID = db.insert(
58
+ table: "links",
59
+ values: <String, dynamic>{
60
+ "id": null, // auto-incremented ID assigned automatically
61
+ "url": "http://example.org/",
62
+ "created_at": DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000,
63
+ "updated_at": null,
64
+ },
65
+ );
66
+ ```
46
67
47
- var db = await SQLiteDatabase.createInMemory();
68
+ ### Executing an ` UPDATE ` statement
48
69
49
- var cursor = await db.rawQuery("SELECT 1 AS a, 2 as b, 3 AS c");
70
+ ``` dart
71
+ // Change the previously-inserted link from HTTP to HTTPS:
72
+ db.update(
73
+ table: "links",
74
+ values: <String, dynamic>{
75
+ "url": "https://example.org/",
76
+ "updated_at": DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000,
77
+ },
78
+ where: "id = ?",
79
+ whereArgs: <String>[linkID.toString()],
80
+ );
81
+ ```
50
82
51
- await DatabaseUtils.dumpCursor(cursor);
83
+ ### Executing a ` DELETE ` statement
84
+
85
+ ``` dart
86
+ // Delete the previously-inserted link:
87
+ db.delete(
88
+ table: "links",
89
+ where: "id = ?",
90
+ whereArgs: <String>[linkID.toString()],
91
+ );
52
92
```
53
93
54
- ### Iterating the rows in a returned cursor
94
+ ### Executing an arbitrary SQL query
55
95
56
96
``` dart
57
97
for (var row in await db.rawQuery("SELECT 1 AS a, 2 as b, 3 AS c")) {
58
98
print(row); // prints: {a: 1, b: 2, c: 3}
59
99
}
60
100
```
61
101
102
+ ### Creating an in-memory database
103
+
104
+ ``` dart
105
+ import 'package:flutter_sqlcipher/sqlite.dart';
106
+
107
+ var db = await SQLiteDatabase.createInMemory();
108
+ ```
109
+
110
+ ### Creating an on-disk database
111
+
112
+ This example also uses
113
+ [ ` Context ` ] ( https://pub.dartlang.org/documentation/flutter_android/latest/android_content/Context-class.html )
114
+ from the [ flutter_android] ( https://pub.dartlang.org/packages/flutter_android ) package
115
+ to obtain the app's cache directory path.
116
+
117
+ ``` dart
118
+ import 'package:flutter_sqlcipher/sqlite.dart';
119
+ import 'package:flutter_android/android_content.dart' show Context;
120
+
121
+ var cacheDir = await Context.cacheDir;
122
+ await cacheDir.create(recursive: true);
123
+
124
+ var cacheFile = File("${cacheDir.path}/cache.db");
125
+
126
+ var db = await SQLiteDatabase.openOrCreateDatabase(cacheFile.path);
127
+ ```
128
+
62
129
### Using a bundled database from the app's assets
63
130
64
- TODO
131
+ (To be added.)
65
132
66
133
Frequently Asked Questions
67
134
--------------------------
0 commit comments