#!/bin/sh # FILE: "/home/evmik/src/my_src/GradeBook/libBasicTableOperations.tcl" # LAST MODIFICATION: "Fri, 15 Apr 2011 20:01:22 -0400 (evmik)" # (C) 2011 by Eugeniy Mikhailov, # $Id:$ # vim:set ft=tcl: \ exec tclsh "$0" "$@" # ####################################################### # everywhere below db must be initialized with command # sqlite3 db $dbfile # ####################################################### proc getColListFromTable {table} { set eval_str [concat SELECT * FROM \'$table\'] set err [catch { db eval $eval_str v { set all_column_names $v(*) } } errStat ] if { $err } { dbg "we should never be here if GradesTable exists" 1 dbg $errStat 1 htmlErrorMsg $errStat } return $all_column_names } proc SelectColvalueFromTable { table column_of_interest col row_value } { # select value of 'column_of_interest' from 'table' where 'col'='row_value' set value {} set eval_str "SELECT \"$column_of_interest\" FROM \'$table\' WHERE \"$col\"=\"$row_value\"" set err [catch { db eval $eval_str v { set value $v($column_of_interest) } } errStat ] if { $err } { set msg_text "the following error happen in proc SelectColvalueFromTable while selecting from table $table $errStat" htmlErrorMsg $msg_text dbg $msg_text 3 set $value {} } return $value } proc existsColumnWithRowvalueInTable { table column row_value } { set sql_str [concat SELECT 1 FROM \'$table\' WHERE \"$column\"=\"$row_value\"] if {![db exists $sql_str]} { dbg "Column \'$column\' does not have row with value \'$row_value\' in table \'$table\'" 3 return false } else { return true } } proc UpdateColumnWithValueInTableWhere { table column val where_column row_value } { set eval_str [concat UPDATE \'$table\' SET \"$column\"='$val' WHERE \"$where_column\"=\'$row_value\'] set err [catch {db eval $eval_str } errStat] if { $err } { set msg_str "Unable to update column $column in the table $table where $where_column=$row_value. The following error happen: $errStat" htmlErrorMsg $msg_str dbg $msg_str 3 } } proc doesColumnExists {col table} { if { $col in [getColListFromTable $table] } { return true; } else { return false; } }