Index: trunk/Ohana/src/opihi/cmd.data/Makefile
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 35109)
+++ trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 35237)
@@ -43,4 +43,6 @@
 $(SRC)/dbselect.$(ARCH).o	\
 $(SRC)/dbinsert.$(ARCH).o	\
+$(SRC)/dbadmin.$(ARCH).o	\
+$(SRC)/dbupdate.$(ARCH).o	\
 $(SRC)/erase.$(ARCH).o		\
 $(SRC)/extract.$(ARCH).o	\
Index: trunk/Ohana/src/opihi/cmd.data/dbadmin.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/dbadmin.c	(revision 35237)
+++ trunk/Ohana/src/opihi/cmd.data/dbadmin.c	(revision 35237)
@@ -0,0 +1,66 @@
+# include "data.h"
+# if (HAVE_MYSQL_H) 
+# include "mysql.h"
+
+int dbadmin (int argc, char **argv) {
+  
+  int i, Nbytes;
+  char *query;
+
+  MYSQL *connection = NULL;
+
+  if (argc < 2) {
+    gprint (GP_ERR, "USAGE: dbadmin [command]\n");
+    gprint (GP_ERR, "  currently allowed commands: CREATE, DROP, USE\n");
+    return FALSE;
+  }
+
+  connection = db_getConnection ();
+  if (connection == NULL) {
+    gprint (GP_ERR, "database not defined; use dbconnect\n");
+    return (FALSE);
+  }
+
+  // check for allowed sql commands
+  if (!strcasecmp(argv[1], "USE")) goto valid;
+  if (!strcasecmp(argv[1], "DROP")) goto valid;
+  if (!strcasecmp(argv[1], "CREATE")) goto valid;
+  gprint (GP_ERR, "currently allowed dbadmin commands are CREATE, DROP\n");
+  return (FALSE);
+
+valid:
+
+  // generate the query line (concat the argv[i] entries)
+  Nbytes = 0;
+  for (i = 1; i < argc; i++) {
+    Nbytes += strlen(argv[i]) + 1;
+  }
+  Nbytes += 10;
+
+  ALLOCATE (query, char, Nbytes);
+  bzero (query, Nbytes);
+  for (i = 1; i < argc; i++) {
+    strcat (query, argv[i]);
+    strcat (query, " ");
+  }
+  
+  fprintf (stderr, "query: %s\n", query);
+
+  if (mysql_query (connection, query)) {
+    gprint (GP_ERR, "problem with query\n");
+    gprint (GP_ERR, "%s\n", mysql_error (connection));
+    free (query);
+    return (FALSE);
+  }
+  free (query);
+  return (TRUE);
+}
+# else 
+
+int dbadmin (int argc, char **argv) {
+
+  gprint (GP_ERR, "mysql library is not available\n");
+  return FALSE;
+}
+
+# endif
Index: trunk/Ohana/src/opihi/cmd.data/dbupdate.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/dbupdate.c	(revision 35237)
+++ trunk/Ohana/src/opihi/cmd.data/dbupdate.c	(revision 35237)
@@ -0,0 +1,57 @@
+# include "data.h"
+# if (HAVE_MYSQL_H) 
+# include "mysql.h"
+
+int dbupdate (int argc, char **argv) {
+  
+  int i, Nbytes;
+  char *query;
+
+  MYSQL *connection = NULL;
+
+  if (argc < 4) {
+    gprint (GP_ERR, "USAGE: dbupdate (tablerefs) set field = value,... [where]");
+    return FALSE;
+  }
+
+  connection = db_getConnection ();
+  if (connection == NULL) {
+    gprint (GP_ERR, "database not defined; use dbconnect\n");
+    return (FALSE);
+  }
+
+  // generate the query line (concat the argv[i] entries)
+  Nbytes = 0;
+  for (i = 1; i < argc; i++) {
+    Nbytes += strlen(argv[i]) + 1;
+  }
+  Nbytes += 10;
+
+  ALLOCATE (query, char, Nbytes);
+  bzero (query, Nbytes);
+  strcat (query, "update ");
+  for (i = 1; i < argc; i++) {
+    strcat (query, argv[i]);
+    strcat (query, " ");
+  }
+  
+  fprintf (stderr, "query: %s\n", query);
+
+  if (mysql_query (connection, query)) {
+    gprint (GP_ERR, "problem with query\n");
+    gprint (GP_ERR, "%s\n", mysql_error (connection));
+    free (query);
+    return (FALSE);
+  }
+  free (query);
+  return (TRUE);
+}
+# else 
+
+int dbupdate (int argc, char **argv) {
+
+  gprint (GP_ERR, "mysql library is not available\n");
+  return FALSE;
+}
+
+# endif
Index: trunk/Ohana/src/opihi/cmd.data/init.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/init.c	(revision 35109)
+++ trunk/Ohana/src/opihi/cmd.data/init.c	(revision 35237)
@@ -25,4 +25,6 @@
 int dbselect         PROTO((int, char **));
 int dbinsert         PROTO((int, char **));
+int dbadmin          PROTO((int, char **));
+int dbupdate         PROTO((int, char **));
 int delete           PROTO((int, char **));
 int densify          PROTO((int, char **));
@@ -172,4 +174,6 @@
   {1, "dbselect",     dbselect,         "extract vectors from mysql database table"},
   {1, "dbinsert",     dbinsert,         "sql insert command"},
+  {1, "dbadmin",      dbadmin,          "sql admin command (create, drop)"},
+  {1, "dbupdate",     dbupdate,         "sql update command"},
   {1, "delete",       delete,           "delete vectors or images"},
   {1, "densify",      densify,          "create an image histogram from a set of vectors"},
