diff --git a/jdbc-tutorial/pom.xml b/jdbc-tutorial/pom.xml
new file mode 100644
index 0000000..2a41757
--- /dev/null
+++ b/jdbc-tutorial/pom.xml
@@ -0,0 +1,45 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>com.supwisdom</groupId>
+	<artifactId>jdbc-tutorial</artifactId>
+	<version>1.0-SNAPSHOT</version>
+	<packaging>jar</packaging>
+
+	<name>jdbc-tutorial</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<version>1.4.178</version>
+		</dependency>
+	</dependencies>
+	
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>exec-maven-plugin</artifactId>
+				<version>1.3</version>
+				<configuration>
+					<includeProjectDependencies>true</includeProjectDependencies>
+					<mainClass>org.h2.tools.Server</mainClass>
+					<commandlineArgs>-baseDir ${basedir}</commandlineArgs>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/jdbc-tutorial/src/main/java/com/supwisdom/App.java b/jdbc-tutorial/src/main/java/com/supwisdom/App.java
new file mode 100644
index 0000000..d4069da
--- /dev/null
+++ b/jdbc-tutorial/src/main/java/com/supwisdom/App.java
@@ -0,0 +1,16 @@
+package com.supwisdom;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+public class App {
+  
+  public static void main(String[] args) throws Exception {
+    Class.forName("org.h2.Driver");
+    Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", "");
+    // add application code here
+    
+    conn.close();
+  }
+  
+}
diff --git a/jdbc-tutorial/src/test/java/com/supwisdom/AppTest.java b/jdbc-tutorial/src/test/java/com/supwisdom/AppTest.java
new file mode 100644
index 0000000..3d41cae
--- /dev/null
+++ b/jdbc-tutorial/src/test/java/com/supwisdom/AppTest.java
@@ -0,0 +1,38 @@
+package com.supwisdom;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}
