@@ -34,34 +34,101 @@ Android only, at present. (iOS support is planned.)
3434Examples
3535--------
3636
37- ### Querying an in-memory database
37+ ### Executing an arbitrary SQL statement
3838
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
4254
4355``` 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+ ```
4667
47- var db = await SQLiteDatabase.createInMemory();
68+ ### Executing an ` UPDATE ` statement
4869
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+ ```
5082
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+ );
5292```
5393
54- ### Iterating the rows in a returned cursor
94+ ### Executing an arbitrary SQL query
5595
5696``` dart
5797for (var row in await db.rawQuery("SELECT 1 AS a, 2 as b, 3 AS c")) {
5898 print(row); // prints: {a: 1, b: 2, c: 3}
5999}
60100```
61101
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+
62129### Using a bundled database from the app's assets
63130
64- TODO
131+ (To be added.)
65132
66133Frequently Asked Questions
67134--------------------------
0 commit comments