Index: trunk/psLib/src/db/psDB.c
===================================================================
--- trunk/psLib/src/db/psDB.c	(revision 7644)
+++ trunk/psLib/src/db/psDB.c	(revision 7651)
@@ -12,6 +12,6 @@
  *  @author Joshua Hoblitt
  *
- *  @version $Revision: 1.61 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-06-23 01:51:48 $
+ *  @version $Revision: 1.62 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-06-23 02:57:04 $
  *
  *  Copyright 2005 Joshua Hoblitt, University of Hawaii
@@ -573,20 +573,7 @@
                     const psArray *rowSet)
 {
-    char            *query;             // SQL query
-    MYSQL_STMT      *stmt;              // prepared db statement
-    unsigned long   paramCount;         // number of placeholders in query
-    psU64           j;                  // row index
-
-    // Verify database connections is set up
-    if(dbh == NULL) {
-        psError(PS_ERR_UNEXPECTED_NULL,true,PS_ERRORTEXT_psDB_INVALID_PSDB);
-        return false;
-    }
-
-    // Verify row array is non-NULL
-    if(rowSet == NULL) {
-        psError(PS_ERR_UNEXPECTED_NULL,true,PS_ERRORTEXT_psDB_INSERT_ROW_FAIL);
-        return false;
-    }
+    PS_ASSERT_PTR_NON_NULL(dbh, false);
+    PS_ASSERT_PTR_NON_NULL(tableName, false);
+    PS_ASSERT_PTR_NON_NULL(rowSet, false);
 
     // we are assuming that all rows in the set have an identical with reguard
@@ -595,5 +582,5 @@
 
     // Generate SQL query string
-    query = psDBGenerateInsertRowSQL(tableName, row);
+    char *query = psDBGenerateInsertRowSQL(tableName, row);
     if (!query) {
         psError(PS_ERR_UNEXPECTED_NULL, false, PS_ERRORTEXT_psDB_QUERY_GEN_FAIL);
@@ -601,12 +588,6 @@
     }
 
-    // Prepare SQL statement
-    stmt = mysql_stmt_init(dbh->mysql);
-    if (!stmt) {
-        psAbort(__func__, "mysql_stmt_init(), out of memory.");
-    }
-    if (mysql_stmt_prepare(stmt, query, (unsigned long)strlen(query))) {
-        psError(PS_ERR_UNKNOWN, true, "Failed to prepare query.  Error: %s", mysql_stmt_error(stmt));
-        mysql_stmt_close(stmt);
+    if (p_psDBRunQueryPrepared(dbh, rowSet, query) < 0) {
+        psError(PS_ERR_UNEXPECTED_NULL, false, "insert failed");
         psFree(query);
         return false;
@@ -614,52 +595,4 @@
 
     psFree(query);
-
-    // how many place holders are in our query
-    paramCount = mysql_stmt_param_count(stmt);
-
-    // structure large enough to hold one field of data per place holder
-    psDBMysqlRow *mysqlRow = psDBMysqlRowAlloc(paramCount);
-
-    // loop over rows
-    for (j = 0; j < rowSet->n; j++) {
-        psMetadata *rowData = rowSet->data[j];
-
-        if (!psDBPackMySQLRow(mysqlRow, rowData)) {
-            psError(PS_ERR_UNKNOWN, false, "Failed to pack params into bind structure.");
-
-            mysql_rollback(dbh->mysql);
-
-            psFree(mysqlRow);
-            mysql_stmt_close(stmt);
-
-            return false;
-        }
-
-        if (mysql_stmt_bind_param(stmt, mysqlRow->bind)) {
-            psError(PS_ERR_UNKNOWN, true, "Failed to bind params.  Error: %s", mysql_stmt_error(stmt));
-
-            mysql_rollback(dbh->mysql);
-
-            psFree(mysqlRow);
-            mysql_stmt_close(stmt);
-
-            return false;
-        }
-
-        if (mysql_stmt_execute(stmt)) {
-            psError(PS_ERR_UNKNOWN, true, "Failed to execute prepared statement.  Error: %s",
-                    mysql_stmt_error(stmt));
-
-            mysql_rollback(dbh->mysql);
-
-            psFree(mysqlRow);
-            mysql_stmt_close(stmt);
-
-            return false;
-        }
-    } // end loop over rows
-
-    psFree(mysqlRow);
-    mysql_stmt_close(stmt);
 
     return true;
@@ -734,20 +667,12 @@
                     const char *tableName,
                     const psMetadata *where,
-                    const psMetadata *values)
-{
-    char            *query;
-    MYSQL_STMT      *stmt;              // prepared db statement
-    unsigned long   paramCount;         // number of placeholders in query
-    MYSQL_BIND      *bind;              // field values to insert
-    my_ulonglong    rowsAffected;       // number of rows affected by query
-
-    // Verify database object is not NULL
-    if(dbh == NULL) {
-        psError(PS_ERR_UNEXPECTED_NULL,true,PS_ERRORTEXT_psDB_INVALID_PSDB);
-        return -1;
-    }
+                    psMetadata *values)
+{
+    PS_ASSERT_PTR_NON_NULL(dbh, -1);
+    PS_ASSERT_PTR_NON_NULL(tableName, -1);
+    PS_ASSERT_PTR_NON_NULL(values, -1);
 
     // Generate SQL query to update row
-    query = psDBGenerateUpdateRowSQL(tableName, where, values);
+    char *query = psDBGenerateUpdateRowSQL(tableName, where, values);
     if (!query) {
         psError(PS_ERR_UNEXPECTED_NULL, false, PS_ERRORTEXT_psDB_QUERY_GEN_FAIL);
@@ -755,54 +680,14 @@
     }
 
-    // Initialize SQL statement
-    stmt = mysql_stmt_init(dbh->mysql);
-    if (!stmt) {
-        psAbort(__func__, "mysql_stmt_init(), out of memory.");
-    }
-
-    // Prepare SQL statement
-    if (mysql_stmt_prepare(stmt, query, (unsigned long)strlen(query))) {
-        psError(PS_ERR_UNKNOWN, true, PS_ERRORTEXT_psDB_SQL_PREPARE_FAIL, mysql_stmt_error(stmt));
-        mysql_stmt_close(stmt);
-        psFree(query);
+    psArray *rowData = psArrayAlloc(1);
+    psArrayAdd(rowData, 0, values);
+
+    long rowsAffected = p_psDBRunQueryPrepared(dbh, rowData, query);
+    psFree(rowData);
+    psFree(query);
+    if (rowsAffected < 0) {
+        psError(PS_ERR_UNEXPECTED_NULL, false, "update failed");
         return -1;
     }
-    psFree(query);
-
-    // how many place holders are in our query
-    paramCount = mysql_stmt_param_count(stmt);
-
-    // structure large enough to hold one field of data per place holder
-    psDBMysqlRow *mysqlRow = psDBMysqlRowAlloc(paramCount);
-
-    if (!psDBPackMySQLRow(mysqlRow, values)) {
-        psFree(mysqlRow);
-        mysql_stmt_close(stmt);
-        return -1;
-    }
-
-    if (mysql_stmt_bind_param(stmt, bind)) {
-        psError(PS_ERR_UNKNOWN, true, "Failed to bind params.  Error: %s", mysql_stmt_error(stmt));
-        mysql_rollback(dbh->mysql);
-        psFree(mysqlRow);
-        mysql_stmt_close(stmt);
-        return -1;
-    }
-
-    if (mysql_stmt_execute(stmt)) {
-        psError(PS_ERR_UNKNOWN, true, "Failed to execute prepared statement.  Error: %s",
-                mysql_stmt_error(stmt));
-        mysql_rollback(dbh->mysql);
-        psFree(mysqlRow);
-        mysql_stmt_close(stmt);
-        return -1;
-    }
-
-    psFree(mysqlRow);
-
-    // mysql_stmt_affected_rows() must be called before a commit
-    rowsAffected = mysql_stmt_affected_rows(stmt);
-
-    mysql_stmt_close(stmt);
 
     return rowsAffected;
Index: trunk/psLib/src/db/psDB.h
===================================================================
--- trunk/psLib/src/db/psDB.h	(revision 7644)
+++ trunk/psLib/src/db/psDB.h	(revision 7651)
@@ -10,6 +10,6 @@
  *  @author Joshua Hoblitt
  *
- *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-06-23 01:51:48 $
+ *  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-06-23 02:57:04 $
  *
  *  Copyright 2005 Joshua Hoblitt, University of Hawaii
@@ -281,5 +281,5 @@
     const char *tableName,             ///< Table name
     const psMetadata *where,           ///< Row match criteria
-    const psMetadata *values           ///< new field values
+    psMetadata *values                 ///< new field values
 );
 
