| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import "../lib/sqlite.dart"; | |
| void main() { | |
| Database d = Database("test.db"); | |
| d.execute("drop table if exists Cookies;"); | |
| d.execute(""" | |
| create table Cookies ( | |
| id integer primary key, | |
| name text not null, | |
| alternative_name text | |
| );"""); | |
| d.execute(""" | |
| insert into Cookies (id, name, alternative_name) | |
| values | |
| (1,'Chocolade chip cookie', 'Chocolade cookie'), | |
| (2,'Ginger cookie', null), | |
| (3,'Cinnamon roll', null) | |
| ;"""); | |
| Result result = d.query(""" | |
| select | |
| id, | |
| name, | |
| alternative_name, | |
| case | |
| when id=1 then 'foo' | |
| when id=2 then 42 | |
| when id=3 then null | |
| end as multi_typed_column | |
| from Cookies | |
| ;"""); | |
| for (Row r in result) { | |
| int id = r.readColumnAsInt("id"); | |
| String name = r.readColumnByIndex(1); | |
| String? alternativeName = r.readColumn("alternative_name"); | |
| dynamic multiTypedValue = r.readColumn("multi_typed_column"); | |
| print("$id $name $alternativeName $multiTypedValue"); | |
| } | |
| result = d.query(""" | |
| select | |
| id, | |
| name, | |
| alternative_name, | |
| case | |
| when id=1 then 'foo' | |
| when id=2 then 42 | |
| when id=3 then null | |
| end as multi_typed_column | |
| from Cookies | |
| ;"""); | |
| for (Row r in result) { | |
| int id = r.readColumnAsInt("id"); | |
| String name = r.readColumnByIndex(1); | |
| String? alternativeName = r.readColumn("alternative_name"); | |
| dynamic multiTypedValue = r.readColumn("multi_typed_column"); | |
| print("$id $name $alternativeName $multiTypedValue"); | |
| if (id == 2) { | |
| result.close(); | |
| break; | |
| } | |
| } | |
| try { | |
| result.iterator.moveNext(); | |
| } on SQLiteException catch (e) { | |
| print("expected exception on accessing result data after close: $e"); | |
| } | |
| try { | |
| d.query(""" | |
| select | |
| id, | |
| non_existing_column | |
| from Cookies | |
| ;"""); | |
| } on SQLiteException catch (e) { | |
| print("expected this query to fail: $e"); | |
| } | |
| d.execute("drop table Cookies;"); | |
| d.close(); | |
| } |