| // 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. |
| |
| // @dart = 2.9 |
| |
| 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(); |
| } |