summaryrefslogtreecommitdiffstats
Side-by-side diff
-rw-r--r--src/controller/selection_to_db.h9
-rw-r--r--src/controller/selection_to_db.sqc9
-rw-r--r--src/controller/selsave.h9
-rw-r--r--src/controller/selsave.sqc41
4 files changed, 56 insertions, 12 deletions
diff --git a/src/controller/selection_to_db.h b/src/controller/selection_to_db.h
deleted file mode 100644
index 4344e0b..0000000
--- a/src/controller/selection_to_db.h
+++ b/dev/null
@@ -1,9 +0,0 @@
-#ifndef SELECTION_TO_DB_H
-#define SELECTION_TO_DB_H
-
-/*
- * Send the current selection from memory to the database.
- */
-void selection_to_db (void);
-
-#endif // SELECTION_TO_DB_H
diff --git a/src/controller/selection_to_db.sqc b/src/controller/selection_to_db.sqc
index a6c91b9..0d7de7f 100644
--- a/src/controller/selection_to_db.sqc
+++ b/src/controller/selection_to_db.sqc
@@ -1,8 +1,9 @@
#include "selection_to_db.h"
#include "../view/exp004state0.h"
#include <string.h>
-
-EXEC SQL INCLUDE sqlca;
+#include "../util/check_error.h"
+#include "sqlca.h"
+extern struct sqlca sqlca;
/*
* A simple alias to make the code more readable.
@@ -22,7 +23,8 @@ selection_to_db (void)
* gi is defined as NOT NULL this will clear the entire table.
*/
EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL;
-
+ check_error (__FILE__, __LINE__);
+
for (unsigned int i = 0; i < ROWS; i++)
{
if (S.selection[i] == true)
@@ -33,6 +35,7 @@ selection_to_db (void)
}
EXEC SQL COMMIT;
+ check_error (__FILE__, __LINE__);
return;
}
diff --git a/src/controller/selsave.h b/src/controller/selsave.h
new file mode 100644
index 0000000..f5b8fa7
--- a/dev/null
+++ b/src/controller/selsave.h
@@ -0,0 +1,9 @@
+#ifndef SELSAVE_H
+#define SELSAVE_H
+
+/*
+ * Send the current selection from memory to the database.
+ */
+void selsave (void);
+
+#endif // SELSAVE_H
diff --git a/src/controller/selsave.sqc b/src/controller/selsave.sqc
new file mode 100644
index 0000000..97a73b2
--- a/dev/null
+++ b/src/controller/selsave.sqc
@@ -0,0 +1,41 @@
+#include "../util/check_error.h"
+#include "../view/exp004state0.h"
+#include "selsave.h"
+#include "sqlca.h"
+#include <string.h>
+extern struct sqlca sqlca;
+
+/*
+ * A simple alias to make the code more readable.
+ */
+#define S exp004state0
+
+void
+selsave (void)
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ char gi[255];
+ EXEC SQL END DECLARE SECTION;
+
+ /*
+ * WHERE gi IS NOT NULL is added to prevent the PRECOMPILE command
+ * from throwing a warning about modifying an entire table. Since
+ * gi is defined as NOT NULL this will clear the entire table.
+ */
+ EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL;
+ check_error (__FILE__, __LINE__);
+
+ for (unsigned int i = 0; i < ROWS; i++)
+ {
+ if (S.selection[i] == true)
+ {
+ strncpy (gi, S.gi_data[i] + 3, sizeof(gi));
+ EXEC SQL INSERT INTO vis_selection VALUES (:gi);
+ }
+ }
+
+ EXEC SQL COMMIT;
+ check_error (__FILE__, __LINE__);
+
+ return;
+}

Valid XHTML 1.0 Strict

Copyright © 2009 Don Pellegrino All Rights Reserved.