diff --git a/lib/db.php b/lib/db.php
index 687c49a02104959e5cbd3e598d2be128c545e787..09b4934940cfdef8dad249c4170da6e2ed288d1e 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -168,11 +168,7 @@ class OC_DB {
 			try{
 				self::$PDO=new PDO($dsn, $user, $pass, $opts);
 			}catch(PDOException $e) {
-				$error['error']='<b>can not connect to database, using '.$type.'. ('.$e->getMessage().')</center>';
-				$error['hint']='';
-				$errors[]=$error;
-				OC_Template::printGuestPage("", "error", array("errors" => $errors));
-				die();
+				OC_Template::printErrorPage( '<b>can not connect to database, using '.$type.'. ('.$e->getMessage().')' );
 			}
 			// We always, really always want associative arrays
 			self::$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
@@ -268,11 +264,7 @@ class OC_DB {
 			if( PEAR::isError( self::$MDB2 )) {
 				OC_Log::write('core', self::$MDB2->getUserInfo(), OC_Log::FATAL);
 				OC_Log::write('core', self::$MDB2->getMessage(), OC_Log::FATAL);
-				$error['error']='<b>can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')</center>';
-				$error['hint']='';
-				$errors[]=$error;
-				OC_Template::printGuestPage("", "error", array("errors" => $errors));
-				die();
+				OC_Template::printErrorPage( 'can not connect to database, using '.$type.'. ('.self::$MDB2->getUserInfo().')' );
 			}
 
 			// We always, really always want associative arrays
@@ -332,11 +324,7 @@ class OC_DB {
 				$entry .= 'Offending command was: '.htmlentities($query).'<br />';
 				OC_Log::write('core', $entry, OC_Log::FATAL);
 				error_log('DB error: '.$entry);
-				$error['error']=$entry;
-				$error['hint']='';
-				$errors[]=$error;
-				OC_Template::printGuestPage("", "error", array("errors" => $errors));
-				die();
+				OC_Template::printErrorPage( $entry );
 			}
 		}else{
 			try{
@@ -346,11 +334,7 @@ class OC_DB {
 				$entry .= 'Offending command was: '.htmlentities($query).'<br />';
 				OC_Log::write('core', $entry, OC_Log::FATAL);
 				error_log('DB error: '.$entry);
-				$error['error']=$entry;
-				$error['hint']='';
-				$errors[]=$error;
-				OC_Template::printGuestPage("", "error", array("errors" => $errors));
-				die();
+				OC_Template::printErrorPage( $entry );
 			}
 			$result=new PDOStatementWrapper($result);
 		}
@@ -463,11 +447,7 @@ class OC_DB {
 
 		// Die in case something went wrong
 		if( $definition instanceof MDB2_Schema_Error ) {
-			$error['error']=$definition->getMessage().': '.$definition->getUserInfo();
-			$error['hint']='';
-			$errors[]=$error;
-			OC_Template::printGuestPage("", "error", array("errors" => $errors));
-			die();
+			OC_Template::printErrorPage( $definition->getMessage().': '.$definition->getUserInfo() );
 		}
 		if(OC_Config::getValue('dbtype', 'sqlite')==='oci') {
 			unset($definition['charset']); //or MDB2 tries SHUTDOWN IMMEDIATE
@@ -479,11 +459,7 @@ class OC_DB {
 
 		// Die in case something went wrong
 		if( $ret instanceof MDB2_Error ) {
-			$error['error']=self::$MDB2->getDebugOutput().' '.$ret->getMessage() . ': ' . $ret->getUserInfo();
-			$error['hint']='';
-			$errors[]=$error;
-			OC_Template::printGuestPage("", "error", array("errors" => $errors));
-			die();
+			OC_Template::printErrorPage( self::$MDB2->getDebugOutput().' '.$ret->getMessage() . ': ' . $ret->getUserInfo() );
 		}
 
 		return true;
@@ -596,11 +572,7 @@ class OC_DB {
 				$entry .= 'Offending command was: ' . $query . '<br />';
 				OC_Log::write('core', $entry, OC_Log::FATAL);
 				error_log('DB error: '.$entry);
-				$error['error']=$entry;
-				$error['hint']='';
-				$errors[]=$error;
-				OC_Template::printGuestPage("", "error", array("errors" => $errors));
-				die();
+				OC_Template::printErrorPage( $entry );
 			}
 			
 			if($result->numRows() == 0) {
@@ -632,11 +604,7 @@ class OC_DB {
 			$entry .= 'Offending command was: ' . $query.'<br />';
 			OC_Log::write('core', $entry, OC_Log::FATAL);
 			error_log('DB error: ' . $entry);
-			$error['error']=$entry;
-			$error['hint']='';
-			$errors[]=$error;
-			OC_Template::printGuestPage("", "error", array("errors" => $errors));
-			die();
+			OC_Template::printErrorPage( $entry );
 		}
 
 		return $result->execute();
diff --git a/lib/template.php b/lib/template.php
index a10cabf5931d16f1cc790b36ffa24e5b8734c9de..868d5f2ba2e04a7f5354440c0792db87faba59bd 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -496,4 +496,19 @@ class OC_Template{
 		}
 		return $content->printPage();
 	}
+
+        /**
+         * @brief Print a fatal error page and terminates the script
+         * @param string $error The error message to show
+         * @param string $hint An option hint message
+         */
+        public static function printErrorPage( $error, $hint = '' ) {
+                $error['error']=$error;
+                $error['hint']=$hint;
+                $errors[]=$error;
+                OC_Template::printGuestPage("", "error", array("errors" => $errors));
+                die();
+        }
+
+
 }