diff --git a/credentials.sh.templ b/credentials.sh.templ
new file mode 100644
index 0000000..fb0d6c0
--- /dev/null
+++ b/credentials.sh.templ
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+mysqlHost=
+mysqlDB=
+mysqlUser=
+mysqlPassword=
diff --git a/demo.sh b/demo.sh
index cdf3c31..27aab25 100755
--- a/demo.sh
+++ b/demo.sh
@@ -1,20 +1,17 @@
 #!/bin/bash
 
 . base.sh
+. mysql.sh
+. credentials.sh
+
+connect "$mysqlHost" "$mysqlUser" "$mysqlPassword" "$mysqlDB"
 
 route GET / index
 index() {
 	endHeaders
 
-	echo "Hello World"
-}
-
-route GET /foo foobar
-foobar() {
-	status 417
-	endHeaders
-
-	echo "bar"
+	echo "Users:"
+	echo "SELECT * FROM users" | query | getColumns 2
 }
 
 route GET /debug debug
diff --git a/mysql.sh b/mysql.sh
new file mode 100644
index 0000000..48a6c6a
--- /dev/null
+++ b/mysql.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+_mysqlHost=
+_mysqlUser=
+_mysqlPass=
+_mysqlDB=
+
+connect() {
+	_mysqlHost="$1"
+	_mysqlUser="$2"
+	_mysqlPass="$3"
+	_mysqlDB="$4"
+}
+
+_mysqlDo() {
+	mysql -h "$_mysqlHost" -u "$_mysqlUser" -p"$_mysqlPass" -B "$_mysqlDB"
+}
+
+execute() {
+	_mysqlDo > /dev/null
+}
+
+query() {
+	_mysqlDo | tail -n +2
+}
+
+escape() {
+	echo "$1" |
+		sed "s/\\/\\\\/g" |
+		sed "s/'/\\'/g" |
+		sed "s/\"/\\\"/g" |
+		sed "s/\n/\\n/g" |
+		sed "s/\r/\\r/g" |
+		sed "s/\t/\\t/g" |
+		sed "s/\Z/\\Z/g" |
+		sed "s/\b/\\b/g" |
+		sed "s/%/\\%/g" |
+		sed "s/_/\\_/g"
+}
+
+getColumns() {
+	cut -d$'\t' -f "$1"
+}