This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE person( | |
id SERIAL PRIMARY KEY, | |
firstname varchar(80), | |
lastname varchar(80), | |
dateofbirth timestamp, | |
height double precision | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
INSERT INTO person | |
(firstname, lastname, dateofbirth, height) | |
VALUES | |
('John', 'Doe', TIMESTAMP '1980-05-17', 1.92), | |
('Jane', 'Doe', TIMESTAMP '1983-10-23', 1.87), | |
('Baby', 'Doe', TIMESTAMP '2013-09-21', 0.43); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:async'; | |
import 'package:postgresql/postgresql.dart'; | |
void main() { | |
var username = "TheRightMan"; | |
var password = "WithTheRightSecret"; | |
var DBname = "AtTheRightPlace"; | |
var uri = 'postgres://$username:$password@localhost:5432/$DBname'; | |
//Opens a connection. | |
connect(uri).then((Connection connection) { | |
//Insert a new person | |
insertPerson(connection, "Thomas", "Pedersen", new DateTime(1990, 01, 1), 1.92).then((_) { | |
//Print out the table. | |
printEntireTable(connection).then((_) { | |
connection.close(); | |
}); | |
}); | |
}); | |
} | |
Future insertPerson(Connection connection, | |
String firstname, String lastname, | |
DateTime dateOfBirth, double height) { | |
Completer _completer = new Completer(); | |
final String query = | |
"INSERT INTO person (firstname, lastname, dateofbirth, height) VALUES" + | |
"('$firstname', '$lastname', '$dateOfBirth', $height);"; | |
connection.execute(query).then((rowsAffected) { | |
print("Rows Affected: $rowsAffected"); | |
_completer.complete(); | |
}).catchError((error) => _completer.completeError(error)); | |
return _completer.future; | |
} | |
Future printEntireTable(Connection connection) { | |
Completer _completer = new Completer(); | |
final String query = "SELECT id, firstname, lastname, dateofbirth, height FROM person"; | |
connection.query(query).toList().then((rows) { | |
for(var row in rows) { | |
var age = ((new DateTime.now()).difference(row.dateofbirth).inDays/365.2425).floor(); | |
print("(${row.id}) ${row.firstname} ${row.lastname} - $age years old - ${row.height}m"); | |
} | |
_completer.complete(); | |
}).catchError((error) => _completer.completeError(error)); | |
return _completer.future; | |
} |
We start out by importing the “postgresql” pub package, then we connect to the database, insert a new record, and finally we display the data from the database.
I found it surprisingly easy to get going. It have this great thing where you can just type the name of column you want to access, and you get the data out as the right data type.
One thing to note is that it only works as a command line program, not from the browser, which shouldn't be that much of a surprise to anybody.
No comments:
Post a Comment