/* Processed by ecpg (4.12.0) */
/* These include files are added by the preprocessor */
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* End of automatic include section */

#line 1 "F:\\postgrachelor\\project\\dbclient.pgc"
#include <iostream>
#include <stdlib.h>

using namespace std;

void initdb();
void menuInsert();
void menuSelect();
void menuUpdate();
void menuDelete();

void insertCategory();
void insertQuestion();

void selectCategory();
void selectQuestion();

void updateCategory();
void updateQuestion();

void deleteCategory();
void deleteQuestion();

void cinClear();

int main()
{
	initdb();

	char choice;
	int exit = 0;
	for(;!exit;){
		choice = 0;
		cout << endl << endl << endl << "Was wollen Sie tun?:" << endl;
		cout << "(e): Daten eingeben" << endl;
		cout << "(a): Daten anzeigen" << endl;
		cout << "(n): Daten aendern" << endl;
		cout << "(l): Daten loeschen" << endl;
		cout << "(s): schliessen" << endl;
		cin >> choice;
		switch(choice){
			case 'e':
				menuInsert();
				break;
			case 'a':
				menuSelect();
				break;
			case 'n':
				menuUpdate();
				break;
			case 'l':
				menuDelete();
				break;
			case 's':
				exit = 1;
				break;
		}
	}
}

void initdb(){
	{ ECPGconnect(__LINE__, 0, "CSDB@lamp.wlan.hwr-berlin.de" , "gr2" , "2Au-R2n-cQN-uuG" , NULL, 0); }
#line 62 "F:\\postgrachelor\\project\\dbclient.pgc"

		cout << "state: " << sqlca.sqlstate << endl;
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 64 "F:\\postgrachelor\\project\\dbclient.pgc"

}

void menuInsert(){
	char choice = 0;
	cout << "Welche Tabelle?:" << endl;
	cout << "(k): Kategorien" << endl;
	cout << "(f): Fragen" << endl;
	cin >> choice;
	switch(choice){
		case 'k':
			insertCategory();
			break;
		case 'f':
			insertQuestion();
			break;
	}
}

void menuSelect(){
	char choice = 0;
	cout << "Welche Tabelle?:" << endl;
	cout << "(k): Kategorien" << endl;
	cout << "(f): Fragen" << endl;
	cin >> choice;
	switch(choice){
		case 'k':
			selectCategory();
			break;
		case 'f':
			selectQuestion();
			break;
	}
}

void menuUpdate(){
	char choice = 0;
	cout << "In welcher Tabelle?:" << endl;
	cout << "(k): Kategorien" << endl;
	cout << "(f): Fragen" << endl;
	cin >> choice;
	switch(choice){
		case 'k':
			updateCategory();
			break;
		case 'f':
			updateQuestion();
			break;
	}
}

void menuDelete(){
	char choice = 0;
	cout << "Aus welcher Tabelle?:" << endl;
	cout << "(k): Kategorien" << endl;
	cout << "(f): Fragen" << endl;
	cin >> choice;
	switch(choice){
		case 'k':
			deleteCategory();
			break;
		case 'f':
			deleteQuestion();
			break;
	}
}

void insertCategory(){
	/* exec sql begin declare section */
		 
	
#line 133 "F:\\postgrachelor\\project\\dbclient.pgc"
 char eingna [ 4001 ] ;
/* exec sql end declare section */
#line 134 "F:\\postgrachelor\\project\\dbclient.pgc"


	string h = "";
	cout << "Eingabe Name: ";
	ws(cin);
	getline(cin, h);

	//cout << h << endl;
	if (!(h.empty()||!strcmp(h.c_str(),"\n")))
	{
		strcpy(eingna, h.c_str());
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into gr2 . \"Categories\" ( name ) values ( $1  )", 
	ECPGt_char,(eingna),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 145 "F:\\postgrachelor\\project\\dbclient.pgc"

		if (!strcmp(sqlca.sqlstate, "23505")) cout << "GIBT'S SCHON" << endl;
		else if(!strcmp(sqlca.sqlstate, "22021")) cout << "Umlaute bitte umschreiben (z.B. als \"ue\")!";
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 148 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void  insertQuestion(){
	/* exec sql begin declare section */
		 
		 
		 
		 
		 
		 
	
#line 154 "F:\\postgrachelor\\project\\dbclient.pgc"
 char question [ 4001 ] ;
 
#line 155 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans0 [ 4001 ] ;
 
#line 156 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans1 [ 4001 ] ;
 
#line 157 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans2 [ 4001 ] ;
 
#line 158 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans3 [ 4001 ] ;
 
#line 159 "F:\\postgrachelor\\project\\dbclient.pgc"
 int category ;
/* exec sql end declare section */
#line 160 "F:\\postgrachelor\\project\\dbclient.pgc"


	cout << "Frage: ";
	ws(cin);
	cin.getline(question, sizeof(question));
	cout << "Richtige Antwort: ";
	ws(cin);
	cin.getline(ans0, sizeof(ans0));
	cout << "1. Falsche Antwort: ";
	ws(cin);
	cin.getline(ans1, sizeof(ans1));
	cout << "2. Falsche Antwort: ";
	ws(cin);
	cin.getline(ans2, sizeof(ans2));
	cout << "3. Falsche Antwort: ";
	ws(cin);
	cin.getline(ans3, sizeof(ans3));
	cout << "ID der Kategorie:" << endl << "moegliche ";
	selectCategory();
	cin >> category;
	if(category){
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into gr2 . \"Questions\" ( question , answer0 , answer1 , answer2 , answer3 , category ) values ( $1  , $2  , $3  , $4  , $5  , $6  )", 
	ECPGt_char,(question),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans0),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans1),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans2),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans3),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(category),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 181 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "23503")) cout << "Das ist keine gueltige Kategorie!" << endl;
		else if(!strcmp(sqlca.sqlstate, "22021")) cout << "Umlaute bitte umschreiben (z.B. als \"ue\")!";
		cout << "state: " << sqlca.sqlstate << endl;
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 185 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void selectCategory(){
	//Die Ausgabe funktioniert nur dann korrekt, wenn die ids eindeutig sind!!!
	/* exec sql begin declare section */
		 
		 
	
#line 192 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
 
#line 193 "F:\\postgrachelor\\project\\dbclient.pgc"
 char name [ 4001 ] ;
/* exec sql end declare section */
#line 194 "F:\\postgrachelor\\project\\dbclient.pgc"


	cout << "Kategorien:" << endl;

	/* declare xxx cursor for select \"ID\" , name from gr2 . \"Categories\" order by \"ID\" */
#line 198 "F:\\postgrachelor\\project\\dbclient.pgc"

	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare xxx cursor for select \"ID\" , name from gr2 . \"Categories\" order by \"ID\"", ECPGt_EOIT, ECPGt_EORT);}
#line 199 "F:\\postgrachelor\\project\\dbclient.pgc"


	int residl;
	residl = id;

	string hName = "";

	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch first from xxx", ECPGt_EOIT, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(name),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 206 "F:\\postgrachelor\\project\\dbclient.pgc"

	if(!strcmp(sqlca.sqlstate, "00000")){
		hName = name;
		hName.erase(hName.find_last_not_of(" \n\r\t")+1);
		cout << id << " " << hName << endl;
	}
	else if(!strcmp(sqlca.sqlstate, "02000")) cout << "Die Tabelle ist leer!";

	while(id != residl)
	{
		residl = id;
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch next from xxx", ECPGt_EOIT, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(name),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 217 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "00000")){
			hName = name;
			hName.erase(hName.find_last_not_of(" \n\r\t")+1);
			cout << id << " " << hName << endl;
		}
	}
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 224 "F:\\postgrachelor\\project\\dbclient.pgc"

}

void selectQuestion(){
	//Die Ausgabe funktioniert nur dann korrekt, wenn die ids eindeutig sind!!!
	/* exec sql begin declare section */
		 
		 
		 
		 
		 
		 
		 
		 
		 
	
#line 230 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
 
#line 231 "F:\\postgrachelor\\project\\dbclient.pgc"
 char question [ 4001 ] ;
 
#line 232 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans0 [ 4001 ] ;
 
#line 233 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans1 [ 4001 ] ;
 
#line 234 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans2 [ 4001 ] ;
 
#line 235 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans3 [ 4001 ] ;
 
#line 236 "F:\\postgrachelor\\project\\dbclient.pgc"
 char cat [ 4001 ] ;
 
#line 237 "F:\\postgrachelor\\project\\dbclient.pgc"
 int sites ;
 
#line 238 "F:\\postgrachelor\\project\\dbclient.pgc"
 int offset ;
/* exec sql end declare section */
#line 239 "F:\\postgrachelor\\project\\dbclient.pgc"


	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ceil ( count ( * ) / 5.0 ) from gr2 . \"Questions\"", ECPGt_EOIT, 
	ECPGt_int,&(sites),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 241 "F:\\postgrachelor\\project\\dbclient.pgc"

	cout << "Es gibt " << sites << " Seiten. Welche soll angezeigt werden?" << endl;
	cin >> offset;
	while(offset > sites || offset < 1){
		cout << "Diese Seite gibt es nicht. Bitte gueltige Seitenzahl eingeben!" << endl;
		cin >> offset;
	}
	offset = (offset-1)*5;

	string hQuestion = "", hAns0 = "", hAns1 = "", hAns2 = "", hAns3 = "", hCat = "";

	cout << "Fragen:" << endl << endl;

	ECPGset_var( 0, &( offset ), __LINE__);\
 /* declare yyy cursor for select q . \"ID\" , q . question , q . answer0 , q . answer1 , q . answer2 , q . answer3 , c . name from gr2 . \"Questions\" q join gr2 . \"Categories\" c on q . category = c . \"ID\" order by c . \"ID\" limit 5 offset $1  */
#line 254 "F:\\postgrachelor\\project\\dbclient.pgc"

	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare yyy cursor for select q . \"ID\" , q . question , q . answer0 , q . answer1 , q . answer2 , q . answer3 , c . name from gr2 . \"Questions\" q join gr2 . \"Categories\" c on q . category = c . \"ID\" order by c . \"ID\" limit 5 offset $1 ", 
	ECPGt_int,&(offset),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 255 "F:\\postgrachelor\\project\\dbclient.pgc"


	int residl;
	residl = id;

	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch first from yyy", ECPGt_EOIT, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(question),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans0),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans1),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans2),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans3),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(cat),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 260 "F:\\postgrachelor\\project\\dbclient.pgc"

	if(!strcmp(sqlca.sqlstate, "00000")){
		hQuestion = question;
		hAns0 = ans0;
		hAns1 = ans1;
		hAns2 = ans2;
		hAns3 = ans3;
		hCat = cat;
		hQuestion.erase(hQuestion.find_last_not_of(" \n\r\t")+1);
		hAns0.erase(hAns0.find_last_not_of(" \n\r\t")+1);
		hAns1.erase(hAns1.find_last_not_of(" \n\r\t")+1);
		hAns2.erase(hAns2.find_last_not_of(" \n\r\t")+1);
		hAns3.erase(hAns3.find_last_not_of(" \n\r\t")+1);
		hCat.erase(hCat.find_last_not_of(" \n\r\t")+1);
		cout << "Schema:" << endl;
		cout << "Frage: Kategorie" << endl << "	Richtige Antwort" << endl << "	Falsche Antwort 1" << endl << "	Falsche Antwort 2" << endl << "	Falsche Antwort 3" << endl << endl << endl;
		cout << hQuestion << ": " << hCat << endl;
		cout << "	" << hAns0 << endl;
		cout << "	" << hAns1 << endl;
		cout << "	" << hAns2 << endl;
		cout << "	" << hAns3 << endl;
	}
	else if(!strcmp(sqlca.sqlstate, "02000")) cout << "Die Tabelle ist leer!";

	while(id != residl)
	{
		residl = id;
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch next from yyy", ECPGt_EOIT, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(question),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans0),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans1),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans2),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(ans3),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,(cat),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 287 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "00000")){
			hQuestion = question;
			hAns0 = ans0;
			hAns1 = ans1;
			hAns2 = ans2;
			hAns3 = ans3;
			hCat = cat;
			hQuestion.erase(hQuestion.find_last_not_of(" \n\r\t")+1);
			hAns0.erase(hAns0.find_last_not_of(" \n\r\t")+1);
			hAns1.erase(hAns1.find_last_not_of(" \n\r\t")+1);
			hAns2.erase(hAns2.find_last_not_of(" \n\r\t")+1);
			hAns3.erase(hAns3.find_last_not_of(" \n\r\t")+1);
			hCat.erase(hCat.find_last_not_of(" \n\r\t")+1);
			cout << hQuestion << ": " << hCat << endl;
			cout << "	" << hAns0 << endl;
			cout << "	" << hAns1 << endl;
			cout << "	" << hAns2 << endl;
			cout << "	" << hAns3 << endl;
		}
	}
	{ ECPGtrans(__LINE__, NULL, "commit");}
#line 308 "F:\\postgrachelor\\project\\dbclient.pgc"

}

void updateCategory(){
	/* exec sql begin declare section */
		 
		 
	
#line 313 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
 
#line 314 "F:\\postgrachelor\\project\\dbclient.pgc"
 char name [ 4001 ] ;
/* exec sql end declare section */
#line 315 "F:\\postgrachelor\\project\\dbclient.pgc"

	cout << "Welche Kategorie soll bearbeitet werden? (ID eingeben):" << endl;
	selectCategory();
	cin >> id;
	cout << "Welchen neuen Namen soll die Kategorie bekommen?" << endl;
	ws(cin);
	cin.getline(name, sizeof(name));
	if(id){
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Categories\" set name = $1  where \"ID\" = $2 ", 
	ECPGt_char,(name),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 323 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "02000")) cout << "Kein derartiger Datensatz gefunden!";
		else if(!strcmp(sqlca.sqlstate, "22021")) cout << "Umlaute bitte umschreiben (z.B. als \"ue\")!";
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 326 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void updateQuestion(){
	/* exec sql begin declare section */
		 
		 
		 
		 
		 
		 
		 
	
#line 332 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
 
#line 333 "F:\\postgrachelor\\project\\dbclient.pgc"
 char question [ 4001 ] ;
 
#line 334 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans0 [ 4001 ] ;
 
#line 335 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans1 [ 4001 ] ;
 
#line 336 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans2 [ 4001 ] ;
 
#line 337 "F:\\postgrachelor\\project\\dbclient.pgc"
 char ans3 [ 4001 ] ;
 
#line 338 "F:\\postgrachelor\\project\\dbclient.pgc"
 int cat ;
/* exec sql end declare section */
#line 339 "F:\\postgrachelor\\project\\dbclient.pgc"

	char choice = 0;
	cout << "Welche Frage soll bearbeitet werden? (ID eingeben):" << endl;
	cin >> id;
	if(id){
		cout << "Was soll an der Frage geaendert werden?" << endl << "(f): Die Fragenstellung" << endl << "(0): Die richtige Antwort" << endl << "(1)-(3): Eine der falschen Antworten" << endl << "(k): Die Kategorie" << endl;
		cin >> choice;
		switch(choice){
			case 'f':
				cout << "Neue Fragenstellung: ";
				ws(cin);
				cin.getline(question, sizeof(question));
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set question = $1  where \"ID\" = $2 ", 
	ECPGt_char,(question),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 351 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
			case '0':
				cout << "Neue richtige Antwort: ";
				ws(cin);
				cin.getline(ans0, sizeof(ans0));
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set answer0 = $1  where \"ID\" = $2 ", 
	ECPGt_char,(ans0),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 357 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
			case '1':
				cout << "Neue falsche Antwort: ";
				ws(cin);
				cin.getline(ans1, sizeof(ans1));
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set answer1 = $1  where \"ID\" = $2 ", 
	ECPGt_char,(ans1),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 363 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
			case '2':
				cout << "Neue falsche Antwort: ";
				ws(cin);
				cin.getline(ans2, sizeof(ans2));
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set answer2 = $1  where \"ID\" = $2 ", 
	ECPGt_char,(ans2),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 369 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
			case '3':
				cout << "Neue falsche Antwort: ";
				ws(cin);
				cin.getline(ans3, sizeof(ans3));
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set answer3 = $1  where \"ID\" = $2 ", 
	ECPGt_char,(ans3),(long)4001,(long)1,(4001)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 375 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
			case 'k':
				cout << "Neue Kategorie (ID):" << endl;
				selectCategory();
				cin >> cat;
				{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update gr2 . \"Questions\" set category = $1  where \"ID\" = $2 ", 
	ECPGt_int,&(cat),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 381 "F:\\postgrachelor\\project\\dbclient.pgc"

				break;
		}
		if(!strcmp(sqlca.sqlstate, "02000")) cout << "Kein derartiger Datensatz gefunden!";
		else if(!strcmp(sqlca.sqlstate, "22021")) cout << "Umlaute bitte umschreiben (z.B. als \"ue\")!";
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 386 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void deleteCategory(){
	/* exec sql begin declare section */
		 
	
#line 392 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
/* exec sql end declare section */
#line 393 "F:\\postgrachelor\\project\\dbclient.pgc"

	cout << "Welche Kategorie? (ID)" << endl;
	selectCategory();
	cin >> id;
	if(id){
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from gr2 . \"Categories\" where \"ID\" = $1 ", 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 398 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "23503")) cout << "Kategorie kann nicht geloescht werden! (Existieren noch Fragen mit der Kategorie?)" << endl;
		else if(!strcmp(sqlca.sqlstate, "02000")) cout << "Kategorie existiert nicht!" << endl;
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 401 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void deleteQuestion(){
	/* exec sql begin declare section */
		 
	
#line 407 "F:\\postgrachelor\\project\\dbclient.pgc"
 int id ;
/* exec sql end declare section */
#line 408 "F:\\postgrachelor\\project\\dbclient.pgc"

	cout << "Welche Frage? (ID)" << endl;
	selectCategory();
	cin >> id;
	if(id){
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from gr2 . \"Questions\" where \"ID\" = $1 ", 
	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
#line 413 "F:\\postgrachelor\\project\\dbclient.pgc"

		if(!strcmp(sqlca.sqlstate, "02000")) cout << "Frage existiert nicht!" << endl;
		{ ECPGtrans(__LINE__, NULL, "commit");}
#line 415 "F:\\postgrachelor\\project\\dbclient.pgc"

	}
}

void cinClear() {
	char Muell;
	cin.clear();
	do {
		cin.get(Muell);
	} while (Muell != '\n');
}
