Index: trunk/psModules/src/concepts/pmConceptsRead.c
===================================================================
--- trunk/psModules/src/concepts/pmConceptsRead.c	(revision 17911)
+++ trunk/psModules/src/concepts/pmConceptsRead.c	(revision 18163)
@@ -9,4 +9,5 @@
 #include <pslib.h>
 
+#include "pmConfig.h"
 #include "pmHDU.h"
 #include "pmFPA.h"
@@ -363,9 +364,17 @@
 }
 
-psMetadataItem *p_pmConceptsReadSingleFromDatabase(const char *name, const psMetadata *database, psDB *db,
-                                                   const pmFPA *fpa, const pmChip *chip, const pmCell *cell)
+psMetadataItem *p_pmConceptsReadSingleFromDatabase(const char *name, const psMetadata *database,
+                                                   pmConfig *config, const pmFPA *fpa, const pmChip *chip,
+                                                   const pmCell *cell)
 {
     PS_ASSERT_STRING_NON_EMPTY(name, NULL);
-    PS_ASSERT_METADATA_NON_NULL(database, NULL);
+    PS_ASSERT_PTR_NON_NULL(config, NULL);
+
+    psDB *db = pmConfigDB(config);      // Database handle
+    if (!db) {
+        psErrorClear();
+        psWarning("Unable to initialise database to write concepts.");
+        return NULL;
+    }
 
     psMetadataItem *item = psMetadataLookup(database, name); // Item to return
@@ -384,5 +393,5 @@
 
     psString sql = pmConceptsInterpolate(item->data.str, fpa, chip, cell);
-    if (!p_psDBRunQuery(db, sql)) {
+    if (!p_psDBRunQuery(config->database, sql)) {
         psWarning("Unable to query database for concept %s --- ignored.", name);
         psFree(sql);
@@ -391,5 +400,5 @@
     psFree(sql);
 
-    psArray *rows = p_psDBFetchResult(db); // Rows returned from the query
+    psArray *rows = p_psDBFetchResult(config->database); // Rows returned from the query
     if (rows->n == 0) {
         psWarning("No rows returned from database query for concept %s --- ignored.", name);
@@ -408,8 +417,9 @@
 
 bool p_pmConceptsReadFromDatabase(psMetadata *target, const psMetadata *specs,
-                                  const pmFPA *fpa, const pmChip *chip, const pmCell *cell, psDB *db)
+                                  const pmFPA *fpa, const pmChip *chip, const pmCell *cell, pmConfig *config)
 {
     PS_ASSERT_PTR_NON_NULL(specs, false);
     PS_ASSERT_PTR_NON_NULL(target, false);
+    PS_ASSERT_PTR_NON_NULL(config, false);
 
 #ifndef HAVE_PSDB
@@ -434,5 +444,6 @@
         pmConceptSpec *spec = specItem->data.V; // The specification
         psString name = specItem->name; // The concept name
-        psMetadataItem *conceptItem = p_pmConceptsReadSingleFromDatabase(name, dbSpec, db, fpa, chip, cell);
+        psMetadataItem *conceptItem = p_pmConceptsReadSingleFromDatabase(name, dbSpec, config,
+                                                                         fpa, chip, cell);
         if (conceptItem && !conceptParse(spec, conceptItem, PM_CONCEPT_SOURCE_DATABASE,
                                          cameraFormat, target, fpa, chip, cell)) {
